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

what_can_I_do
**搬运于
2025-08-24 22:46:32,当前版本为作者最后更新于2023-04-22 22:09:00,作者可能在搬运后再次修改,您可在原文处查看最新版自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多
以下是正文
题目的意思是你要把 个物品分成若干组,每组刚好要有 个物品,其中 大于 ,求 最小可以是多少。
我们先来看看样例吧。
样例 中它告诉我们 ,,让我们求 。我们可以借助画图来理解,就像这样:
1 2 3 4 000 000 000 0一个
0表示一个物品, 至 表示每组的编号。我们要让每组都刚好有 个物品,前三组都满足条件,只有第 组只有一个物品。我们要把第 组凑成有 个物品,也就是有 个物品,我们就得再往第 组放入两个物品,所以 为 。其实我们不难发现,前三组的物品数总和能被 整除,也就是说第四组的物品数就等于 。我们要从 变为 ,就要用 减掉 算出需要加入多少个物品,也就是 。
再看样例 :
1 2 3 4 5 0000 0000 0000 0000 0000我们可以发现按照样例给出的数据前四组都刚好能有 个物品,那么答案应该等于 才对啊,所以刚才的结论不成立。其实不对,因为还有一个要求 大于 没被注意到。那么也就是说前 组虽然都正好是 个物品,但我们还得再自加一组,为第 组,第 组刚开始为 个物品,所以我们得放入 个物品才能使其的物品数刚好等于 ,也就是 。这也证明了结论的正确性。
CODE:
#include<bits/stdc++.h> using namespace std; int n,k; int main() { scanf("%d%d",&n,&k); printf("%d",k-n%k); return 0; }
- 1
信息
- ID
- 8637
- 时间
- 1000ms
- 内存
- 512MiB
- 难度
- 1
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者