1 条题解

  • 0
    @ 2025-8-24 22:39:14

    自动搬运

    查看原文

    来自洛谷,原作者为

    avatar Alex_Wei
    **

    搬运于2025-08-24 22:39:14,当前版本为作者最后更新于2022-08-04 11:33:40,作者可能在搬运后再次修改,您可在原文处查看最新版

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

    以下是正文


    P8457 「SWTR-8」幂塔方程

    题目描述

    如果小 A 是一个,一个一个一个毒瘤,他会让你求解套了十层甚至九层娃的幂塔方程,但他不是。

    他想让你求解:

    xxD(modn)x ^ x\equiv D \pmod n

    保证 nn 的最大质因子不超过 10510 ^ 5,且 DDnn 互质。

    你需要保证得到的解 xx[0,2125][0, 2 ^ {125}] 范围内的整数。若该范围内无解,输出 1-1;若存在多解,输出任意一个。

    多组测试数据。

    数据范围

    • Subtask #1(5 points):n20n\leq 20
    • Subtask #2(8 points):n400n\leq 400。依赖 Subtask #1。
    • Subtask #3(11 points):nn 是质数,T104T\leq 10 ^ 4
    • Subtask #4(15 points):μ(n)0\mu(n) \neq 0T100T\leq 100
    • Subtask #5(9 points):μ(n)0\mu(n) \neq 0T104T\leq 10 ^ 4。依赖 Subtask #4。
    • Subtask #6(13 points):n=pk(pprime)n = p ^ k(p \in \mathrm{prime})T100T\leq 100
    • Subtask #7(7 points):n=pk(pprime)n = p ^ k(p \in \mathrm{prime})T104T\leq 10 ^ 4。依赖 Subtask #3,#6。
    • Subtask #8(6 points):m1064m\leq 1064。依赖 Subtask #2。
    • Subtask #9(16 points):n109n\leq 10 ^ 9T104T\leq 10 ^ 4
    • Subtask #10(10 points):无特殊限制。依赖 Subtask #5,#7,#8,#9。

    对于 100%100\% 的数据:

    • 1T4×1041\leq T\leq 4\times 10 ^ 4
    • 2n10182\leq n \leq 10 ^ {18}
    • 1D<n1\leq D < nDnD\perp n
    • 2p1<p2<<pk1052\leq p_1 < p_2 < \cdots < p_k \leq 10 ^ 5

    Sol 0

    验题人 chenxia25 给出了一个假做法:将 nn 分解质因数,对于每个 pkp ^ k 可以单独求解。然后 excrt 合并。

    问题在于 pkp ^ k 很大,且 pk×φ(pk)p ^ k \times \varphi(p ^ k) 可能不互质,但对于单独求解的 pkp ^ k 得到的解互质(因为有多解),导致同余方程合并时无解。

    Sol 1

    考虑 n=pn = p

    x1x_1xD(modp)x \equiv D \pmod px1(modp1)x \equiv 1 \pmod {p - 1} 的解,容易发现 x1x_1 存在。

    Sol 2

    考虑 n=pkn = p ^ k

    考虑 增量法构造

    xixiD(modpi)x_i ^ {x_i} \equiv D \pmod {p ^ i}。考虑如何 xix_i 推到 xi+1x_{i + 1}

    容易发现令 xixi+Ipi(p1)x_i \gets x_i + Ip ^ i(p - 1) 仍然可行,因此设 xi+1=xi+Ipi(p1)x_{i + 1} = x_i + Ip ^ i(p - 1)

    考虑求出 II。因为 $x_{i + 1} ^ {x _{i + 1}} \equiv D \pmod {p ^ {i + 1}}$,所以 $(x_i + Ip ^ i(p - 1)) ^ {x_i + Ip ^ i(p - 1)} \equiv D \pmod {p ^ {i + 1}}$。

    因为 DDpip ^ i 互质,所以 xix_i 必然和 pip ^ i 互质,所以 xi+Ipi(p1)x_i + Ip ^ i(p - 1)pip ^ i 互质,故和 pi+1p ^ {i + 1} 互质。欧拉定理可以用。

    因为 φ(pi+1)=pi(p1)\varphi(p ^ {i + 1}) = p ^ i(p - 1),所以 Ipi(p1)0(modφ(pi+1))Ip ^ i(p - 1)\equiv 0\pmod {\varphi(p ^ {i + 1})},因此 $(x_i + Ip ^ i(p - 1)) ^ {x_i} \equiv D \pmod {p ^ {i + 1}}$。

    这是一个 n 次剩余的形式。但是 pi+1p ^ {i + 1} 太大,无法使用 BSGS 求解。

    注意到 Ipi(p1)Ip ^ i(p - 1) 的大于 11 次方 mod pi+1\bmod\ p ^ {i + 1} 等于 00,考虑 二项式展开

    $$(x_i + Ip ^ i(p - 1)) ^ {x_i} \equiv x_i ^ {x_i} + \dbinom{x_i} 1 x_i ^ {x_i - 1} \cdot Ip ^ i(p - 1) \equiv D \pmod {p ^ {i + 1}} $$

    v=xixiv = x_i ^ {x_i},则 vIpi(p1)Dv(modpi+1)vIp ^ i(p - 1)\equiv D - v\pmod {p ^ {i + 1}},即 $I\equiv \dfrac{D - v}{v p ^ i (p - 1)} \pmod {p ^ {i + 1}}$。

    因为 vD(modpi)v \equiv D \pmod {p ^ i},所以 DvD - vpip ^ i 的倍数。设 t=Dvpit = \dfrac {D - v}{p ^ i},则 Itv(p1)(modp)I \equiv \dfrac t {v(p - 1)} \pmod p,显然 v(p1)pv(p - 1) \perp p,因此 v(p1)v(p - 1) 在模 pp 意义下的逆元存在,据此可求出 II

    注意到 I<pI < p,因此 Ipi(p1)<pi+1(p1)I p ^ i (p - 1) < p ^ {i + 1}(p - 1),构造出的解远小于 21252 ^ {125} 这一上界,算法可行。

    时间复杂度约为 O(Tlogmlogn)\mathcal{O}(T\log m\log n)

    Sol 3

    考虑 nn 是 square free number。

    考虑 增量法构造

    nn 的质因子分别为 p1,p2,,pkp_1, p_2, \cdots, p_k,令 Pi=j=1ipjP_i = \prod\limits_{j = 1} ^ i p_jQi=j=1i(pj1)Q_i = \prod\limits_{j = 1} ^ i (p_j - 1)

    xiD(modPi)x_i \equiv D \pmod {P_i},考虑如何从 xix_i 推到 xi+1x_{i + 1}

    如法炮制,发现令 xixi+IPiQix_i \gets x_i + IP_iQ_i 仍然可行,因此设 xi+1=xi+IPiQix_{i + 1} = x_i + IP_iQ_i。但是再走二项式展开的老路就行不通了,因为 PiQi≢0(modφ(Pi+1))P_iQ_i \not \equiv 0 \pmod {\varphi(P_{i + 1})}

    怎么办呢?注意到若需保证 xi+1xi+1D(modPi+1)x_{i + 1} ^ {x_{i + 1}} \equiv D \pmod {P_{i + 1}},因为必然有 $(x_i + IP_iQ_i) ^ {x_i + IP_iQ_i} \equiv D\pmod {P_i}$ 且 Pipi+1P_i \perp p_{i + 1},根据中国剩余定理,只需保证 $(x_i + IP_iQ_i) ^ {x_i + IP_iQ_i} \equiv D\pmod {p_{i + 1}}$。发现还是很不好做,因为 II 同时在底数和指数上,而且 PiQi≢0(modpi+11)P_iQ_i \not \equiv 0 \pmod {p_{i + 1} - 1}

    考虑化去指数上的 II

    尝试改变定义,令 xi+1=xi+IPiQi+1x_{i + 1} = x_i + IP_iQ_{i + 1},因为 Qi+1pi+1Q_{i + 1} \perp p_{i + 1},这为接下来寻找逆元奠定基础(如果令 xi+1=xi+IPi+1Qi+1x_{i + 1} = x_i + IP_{i + 1}Q_{i + 1},实际上相当于给 xix_i 加上 xi+1x_{i + 1} 的循环节 lcm(Pi,φ(Pi))\mathrm{lcm}(P_i, \varphi(P_i)) 的倍数 Pi+1Qi+1P_{i + 1}Q_{i + 1} 的倍数,显然不可行,因为当且仅当 xix_i 已经符合要求时我们能找到合法的 xi+1x_{i + 1})且 Qi+10(modpi+11)Q_{i + 1} \equiv 0 \pmod {p_{i + 1} - 1}

    这样一来,上式化简为 $(x_i + IP_iQ_{i + 1}) ^ {x_i} \equiv D\pmod {p_{i + 1}}$。求解该 n 次剩余,令 ggpi+1p_{i + 1} 的任意原根,guD(modpi+1)g ^ u \equiv D\pmod {p_{i + 1}},则 $I \equiv \dfrac {g ^ {\frac u {x_i}} - x_i}{P_i Q_{i + 1}} \pmod {p_{i + 1}}$。

    此时出现了一个严重的问题。分子的 uxi\dfrac u {x_i} 在模 pi+11p_{i +1} - 1 意义下求解,但 xix_ipi+11p_{i + 1} - 1 可能不互质。

    尝试修补这个问题。即尝试令 xipi+11x_i \perp p_{i + 1} - 1

    接下来是一步巧妙转化:令 xixi+JPiQix'_i \gets x_i + JP_iQ_i,使得 xi+JPiQipi+11x_i + JP_iQ_i \perp p_{i + 1} - 1

    但是又出现了问题,即 PiQiP_iQ_i 可能和 pi+11p_{i + 1} - 1 不互质。

    给出引理:若 ada\perp d,则对于任意 n2n\geq 2,存在 J[0,n1]J\in [0, n - 1] 使得 a+Jdna + Jd \perp n

    证明:将 nn 分解质因数成 qici\prod q_i ^ {c_i} 的形式。容易证明 aqicia \perp q_i ^ {c_i}a+dqicia + d \perp q_i ^ {c_i}。若非,说明 aadd 同时含有质因子 qiq_i,与假设矛盾。又因为若 a+Jdqicia + Jd \perp q_i ^ {c_i},显然 a+(J+kqici)dqicia + (J + kq_i ^ {c_i})d \perp q_i ^ {c_i},即 JJqiciq_i ^ {c_i} 模意义下。根据中国剩余定理,得证。

    我们发现这是一个递归形式的问题,即若 归纳假设 xiPiQix_i \perp P_iQ_i,则能找到这样的 JJ 使得 xi+JPiQipi+11x_i + JP_iQ_i \perp p_{i + 1} - 1,且上述引理给出了一个求解 JJ 的方法,即对 pi1p_i - 1 分解质因数并 CRT 合并。而 若条件满足,则结论满足,推出下一轮的条件仍满足:$x'_i \perp p_{i + 1} - 1 \Rightarrow x'_i \perp P_iQ_{i + 1} \Rightarrow x'_i + IP_iQ_{i + 1} \perp P_iQ_{i + 1} \Rightarrow x_{i + 1}\perp P_iQ_{i + 1}$,又因为 DPi+1D\perp P_{i + 1},所以 xi+1Pi+1Qi+1x_{i + 1} \perp P_{i + 1}Q_{i + 1}

    同时,当在构造第一步时,Sol 2 满足归纳的初始条件,因为 x1D(modpi)x_1 \equiv D \pmod {p_i}x11(modp11)x_1 \equiv 1 \pmod {p_1 - 1},显然 x1P1Q1x_1\perp P_1Q_1

    梳理一下上面的思路,发现添加限制 xiPiQix_i \perp P_iQ_i 之后,为了满足该性质所需进行的操作的正确性被该性质所保证,而一开始性质满足,故正确性得以保证。这是归纳法非常巧妙的应用。

    这样,我们解决了 uxi\dfrac u {x_i} 可能无解的问题。

    PiQi+1P_iQ_{i + 1}pi+1p_{i + 1} 互质,其在模 pi+1p_{i + 1} 意义下存在逆元。我们得以算出 $I \equiv \dfrac {g ^ {\frac u {x'_i}} - x'_i}{P_i Q_{i + 1}} \pmod {p_{i + 1}}$,从 xix_i 扩展至 xi+1x_{i + 1}

    时间复杂度约为 $\mathcal{O}(m ^ {\frac 5 4} + T\omega(n)(\log n + \sqrt m))$:预处理 mm 以内每个质数(约 mlnm\frac m {\ln m} 个)的原根(单次复杂度 m14logmm ^ {\frac 1 4} \log m)。BSGS 求解离散对数方程时模数非常小,不需要 map 或哈希表,用数组记录即可。

    由于 I,JI, J 均为 pi+1p_{i + 1} 级别,因此对应的 IPiQi+1\sum IP_iQ_{i + 1}JPiQi\sum JP_iQ_i 的一个粗略上界为 ω(n)n2\omega(n) n ^ 2,略小于 21252 ^ {125} 的限制,符合要求。若担心超出上界,可以令 xix_iPiQiP_iQ_i 取模。

    Sol 4

    结合 Sol 2 和 Sol 3,从小到大考虑所有质因子。若相邻两个质因子相同,则使用 Sol 2,将对应的 pi(p1)p ^ i (p - 1) 换成 PiQiP_iQ_i;否则使用 Sol 3 即可。

    接下来是一些细节讨论:

    • 在 Sol 2 使用欧拉定理时,需要 IPiQi0(modφ(Pi+1))IP_iQ_i \equiv 0 \pmod {\varphi(P_{i + 1})}。考虑 PiQiP_iQ_i 包含 kk 个质因子 pip_i,则 φ(Pi+1)\varphi(P_{i + 1}) 也包含 kk 个质因子(根据欧拉定理的计算式可得)。同时,φ(Pi+1)\varphi(P_{i + 1}) 所有形如 pj1p_j - 1 的乘积项被 QiQ_i 消去,因此上式仍然成立。
    • 在 Sol 2 二项式展开时,需要 IPiQiIP_iQ_i 的大于 11 次幂是 Pi+1P_{i + 1} 的倍数。显然成立,因为 pi=pi+1p_i = p_{i + 1}
    • 在 Sol 2 求解 II 时,需要 DvvPiQi\dfrac {D - v}{vP_iQ_i} 在模 Pi+1P_{i + 1} 意义下存在。由于分子,分母和模数均为 PiP_i 的倍数,因此同除后分母 vQivQ_ipi+1p_{i + 1} 互质,这是因为 vv 显然和 pip_i 互质,且 pi+1=pip_{i + 1} = p_i
    • 在 Sol 3 中的归纳假设需要在 Sol 2 中满足,因为我们会交替使用 Sol 2 和 Sol 3。因为 Sol 2 的初始条件成立,所以 xiPiQix_i \perp P_iQ_i。因为 Pi+1Qi+1P_{i + 1}Q_{i + 1} 相较于 PiQiP_iQ_i 没有增加更多质因子,所以显然 xi+1Pi+1Qi+1x_{i + 1}\perp P_{i + 1}Q_{i + 1}

    综上,时间复杂度 $\mathcal{O}(m ^ {\frac 5 4} + T((\omega(n) + \log m)\log n + \omega(n) \sqrt m))$,常数较大。

    可以获得 100 分的好成绩。

    一些补充:

    • 在求解 JJ 时,可以每次给 xix_i 加上 PiQiP_iQ_i 直到符合要求而非 CRT 求解。因为每次加上 PiQiP_iQ_i 可以看做从 0pi+110\sim p_{i + 1} - 1 中随机选一个数,期望随机 $\dfrac {p_{i + 1} - 1} {\varphi(p_{i + 1} - 1)} - 1$ 次(初始状态算一次)即可得到与 pi+11p_{i + 1} - 1 互质的 xi+JPiQix_i + JP_iQ_i
    • 笔者认为本题是一道不可多得的数论好题。尽管其形式简单,但却涉及到了 exgcd 求逆元,CRT 合并同余方程,BSGS 求解离散对数和 n 次剩余问题。归纳法用得恰到好处。整个算法优美而简洁,思维难度极高。没有冗余步骤,只是纯粹的数论。
    • 1

    信息

    ID
    7768
    时间
    5000ms
    内存
    512MiB
    难度
    7
    标签
    递交数
    0
    已通过
    0
    上传者