1 条题解

  • 0
    @ 2025-8-24 22:52:49

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar ydzr00000
    So you...

    搬运于2025-08-24 22:52:49,当前版本为作者最后更新于2023-11-27 07:46:29,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    题面

    f(x)f(x) 表示 xx 中各个数位上的数字的封闭部分的数量,再令 g0(x)=xg^0(x)=x,对于 k1k\ge 1 满足 gk(x)=f(gk1(x))g^k(x)=f(g^{k-1}(x)),给定 TTx,kx,k,试求 gk(x)g^k(x)

    T105,x,k109T\leq 10^5, x,k\leq 10^9

    题解

    首先让我们考虑 g1(x)g^1(x) 的值,因为 88 的封闭部分最多(有 22 个),所以 g1(x)g^1(x)x=888,888,888x=888,888,888 时取到最大值,为 1818

    再考虑 g2(x)g^2(x) 的值,因为 0g1(x)180\leq g^1(x)\leq 18,计算所有可能的 g2(x)g^2(x),可以发现 0g2(x)20\leq g^2(x)\leq 2

    再类推一次,可以得到 0g3(x)10\leq g^3(x)\leq 1

    k3k\ge 3 的时候,gk(x)g^k(x) 不等于 00 就会等于 11,事实上,可以发现之后的部分为 0,10,1 交替的循环,因为 f(0)=1,f(1)=0f(0)=1,f(1)=0

    于是最多循环 33 次,若 k3k\ge 3 的时候判断最后的值是 00 还是 11 即可。

    我们可以认为暴力计算 f(x)f(x) 的时间复杂度是 log10x\log_{10}x,于是最终时间复杂度为 O(Tlog10x)\mathcal{O}(T\log_{10}x)

    注意一下 f(0)=1f(0)=1,一些写法可能使得 f(0)=0f(0)=0

    • 1

    信息

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