1 条题解

  • 1
    @ 2024-7-24 15:49:22

    根据题目可以知道:我们要求最小的 kk 的取值。

    等式 10k=N×P+Q10^k=N \times P + Q 可以转换为:10kQ(modP)10^k \equiv Q (mod\,\, P)

    讨论 1010PP 互质的情况 :

    由欧拉定理可知:

    10t10tmodφ(p)(modP)10^t \equiv 10^{t\,\,mod \,\,\varphi (p)} \,\,(mod \,\, P)

    又知 φ(P)<P\varphi (P) < P , 那么考虑暴力枚举 1P1 \sim P , 必然可以找出最小的非负整数 tt

    k=P+1,t=kxy(x[1,k],y[0,k1])k = \sqrt{P} + 1 \,, \, t = kx-y \,\, (x \in [1,k] \,\, , \, \, y \in [0,k-1])

    通过枚举 x,yx,y 一定可以遍历到 1P1 \sim P (开始的时候要对 x=0x=0 进行判断)

    发现 x,yΘ(P)x,y \sim \Theta (\sqrt{P}) 显然时间复杂度是不被接受的。那么考虑优化:

    将问题转换为:

    10kxQ×10y(modP)10^{kx} \equiv Q \times 10^y (mod \,\, P)

    用一个哈希表讲右边所有的取值与 yy 的对应存下来,然后枚举 xx ,在哈希表中查找是否有与 akxa^{kx} 对应的 yy 即可。预处理和枚举的时间复杂度都是 Θ(P)\Theta(\sqrt{P})

    讨论此时不要求 1010PP 互质:

    有:

    10tQ(modP)10t+N×P=Q10^t \equiv Q(mod \,\, P) \Leftrightarrow 10^t + N\times P = Q

    d=gcd(10,P)d = \gcd(10,P) ,左等式显然能被 dd 整除,那么可以分为以下两种情况:

    • dQd\,\nmid Q 无解

    • dQd \, \mid Q

      10d10t1+N×Pd=Qd10d10t1Qd(modPd)10d10t1Qd×(10d)1(modPd)\frac{10}{d}10^{t-1} + N \times\frac{P}{d} = \frac{Q}{d}\\ \frac{10}{d}10^{t-1} \equiv \frac{Q}{d}\,\, (mod \,\, \frac{P}{d})\\ \frac{10}{d}10^{t-1} \equiv \frac{Q}{d} \times (\frac{10}{d})^{-1}\,\, (mod \,\, \frac{P}{d})

    如果 1010Pd\frac{P}{d} 已经互质了,那么直接使用前面的方法即可,如果不互质,递归执行步骤。实际上,由于因数有限,递归次数必然不会超过 O(logP)O(log\,\,P)

    https://www.luogu.com.cn/paste/mapg8dc2

    • 1

    信息

    ID
    3091
    时间
    30ms
    内存
    512MiB
    难度
    9
    标签
    (无)
    递交数
    38
    已通过
    3
    上传者