1 条题解
-
0
自动搬运
来自洛谷,原作者为

RyanLi
跟着光,靠近光,成为光,散发光。搬运于
2025-08-24 21:16:04,当前版本为作者最后更新于2024-03-10 20:34:04,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
Source & Knowledge
2024 年 3 月语言月赛,由洛谷网校入门计划/基础计划提供。
题目大意
有 个球,其中有 个橙色的,剩下的是绿的,求至少需要增加几个绿球才能使得 。
题目分析
因为 、、 和 四个数都是已知的,因此我们设需要增加的绿球数量为 ,我们可以列出如下不等式:
将 用 、、、 表示,可以得到:
由于 的结果可能不是整数,而 应该是满足这个不等式的最小整数,因此:
$$x = \left \lceil \dfrac{q \times k}{p} \right \rceil - n $$其中 表示对 向上取整。例如, 时,。
在 C++ 中,由于非负整数除法具有对结果向下取整(例如, 时, 的向下取整为 )的性质,所以有:
$$\left \lceil \dfrac{a}{b} \right \rceil = \left \lfloor \dfrac{a + b - 1}{b} \right \rfloor $$其中 表示对 向下取整。代入我们上面推导出来的 可以得到:
$$x = \left \lfloor \dfrac{q \times k + p - 1}{p} \right \rfloor - n $$直接输出即可。
值得注意的是,如果 在一开始就成立(即不需要增加新的绿球),那么直接输出 即可,无需进行上述计算。
cin >> n >> k >> p >> q; if (1.0 * k / n <= 1.0 * p / q) cout << "0\n"; else cout << (q * k + p - 1) / p - n << '\n';视频讲解
完整代码见视频题解
- 1
信息
- ID
- 9828
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 1
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者