1 条题解

  • 0
    @ 2025-8-24 23:04:59

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar zhujiangyuan
    AFO.

    搬运于2025-08-24 23:04:59,当前版本为作者最后更新于2024-10-10 08:50:18,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    这不就是 P9748 [CSP-J 2023] 小苹果 的第 22 问?

    考虑第 nn 项被删除时一定满足当前 nmodk=0n \bmod k=0,所以我们模拟删除数字的过程,每次删掉 nk\left\lfloor\dfrac{n}{k}\right\rfloor 个数,当 nmodk=0n \bmod k=0 时输出删除次数。

    该题并不会存在 nn 不被删除的情况,所以并不会输出 00

    证明:对于数字 ii,若 i<ki<kii 必然不会删除,但是只有当前数字个数小于 kk 时才停止,所以 iki\ge k 的数必然被删除。又因为题面上规定 k<nk<n,所以 nn 一定会被删除。

    关于复杂度:推一下式子能够得到删除次数 T>logkk1nkT>\log_{\frac{k}{k-1}}\frac{n}{k} 时,一定会停止删除。当 n=1018n=10^{18}k=100k=100 时,这个值大概是 36653665,足以通过此题。

    cin >> n >> k;
    while (n) {
        cnt ++;
        if (n % k == 0) return cout << cnt << '\n', 0;
        n -= n / k;
    }
    
    • 1

    信息

    ID
    10871
    时间
    1000ms
    内存
    500MiB
    难度
    2
    标签
    递交数
    0
    已通过
    0
    上传者