1 条题解

  • 0
    @ 2025-8-24 22:46:32

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar what_can_I_do
    **

    搬运于2025-08-24 22:46:32,当前版本为作者最后更新于2023-04-22 22:09:00,作者可能在搬运后再次修改,您可在原文处查看最新版

    自动搬运只会搬运当前题目点赞数最高的题解,您可前往洛谷题解查看更多

    以下是正文


    传送门

    题目的意思是你要把 n+xn+x 个物品分成若干组,每组刚好要有 kk 个物品,其中 xx 大于 00,求 xx 最小可以是多少。

    我们先来看看样例吧。

    样例 11 中它告诉我们 n=10n=10k=3k=3,让我们求 xx。我们可以借助画图来理解,就像这样:

    1   2    3    4
    000 000  000  0
    

    一个 0 表示一个物品,1144 表示每组的编号。我们要让每组都刚好有 kk 个物品,前三组都满足条件,只有第 44 组只有一个物品。我们要把第 44 组凑成有 kk 个物品,也就是有 33 个物品,我们就得再往第 44 组放入两个物品,所以 xx22

    其实我们不难发现,前三组的物品数总和能被 kk 整除,也就是说第四组的物品数就等于 nmodkn\bmod k。我们要从 nmodkn\bmod k 变为 kk,就要用 kk 减掉 nmodkn\bmod k 算出需要加入多少个物品,也就是 xx

    再看样例 22

    1    2    3    4    5
    0000 0000 0000 0000 0000
    

    我们可以发现按照样例给出的数据前四组都刚好能有 kk 个物品,那么答案应该等于 00 才对啊,所以刚才的结论不成立。其实不对,因为还有一个要求 xx 大于 00 没被注意到。那么也就是说前 44 组虽然都正好是 kk 个物品,但我们还得再自加一组,为第 55 组,第 55 组刚开始为 00 个物品,所以我们得放入 kk 个物品才能使其的物品数刚好等于 kk,也就是 x=4x=4。这也证明了结论的正确性。

    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
    上传者