限于作者比较蒻,看完几篇题解后想了很久才想懂······ 感觉目前的几篇题解讲的不是太模糊就是太冗杂,故也在此记录一下自己的想法。
首先考虑扩展欧拉定理的经典题目
P4139 中的结论:一个数
x x x 的迭代幂次(又称幂塔)
x x x … ⏟ 共 n 个 x = x ↑ ↑ n \underbrace {x^{x^{x^{\dots}}}}_{共n个x}=x \uparrow\uparrow n 共 n 个 x x x x … = x ↑↑ n 在
n n n 足够大时满足
x ↑ ↑ n ≡ x ↑ ↑ ( n + 1 ) ( m o d m ) x \uparrow\uparrow n \equiv x \uparrow\uparrow (n+1) \pmod m x ↑↑ n ≡ x ↑↑ ( n + 1 ) ( mod m ) ,于是设
k = A ↑ ↑ n k = A \uparrow\uparrow n k = A ↑↑ n ,那么根据刚刚的性质就能得到
A k ≡ k ( m o d m ) A^k \equiv k \pmod{m} A k ≡ k ( mod m ) ,故如果我们暂不考虑
k k k 大小的限制,
k k k 自己就是一个合法的答案。但是显然这个
k k k 可能会很大,于是我们考虑通过
k k k 构造出符合题意的更小合法解
k ′ k' k ′ 满足
A k ≡ A k ′ ≡ k ≡ k ′ ( m o d m ) A^k \equiv A^{k'} \equiv k \equiv k' \pmod{m} A k ≡ A k ′ ≡ k ≡ k ′ ( mod m ) 。
由于
k k k 是
A A A 的幂次,而缩小幂次数量级的一个经典方法就是运用扩展欧拉定理,于是假若
k > φ ( m ) k > \varphi(m) k > φ ( m ) ,根据扩展欧拉定理,我们可以很容易地由上面的条件推导出:如果
k ′ k' k ′ 同时满足
A k m o d φ ( m ) + φ ( m ) ≡ A k ′ ( m o d m ) A^{k \bmod \varphi(m) \ + \ \varphi(m)} \equiv A^{k'} \pmod{m} A k mod φ ( m ) + φ ( m ) ≡ A k ′ ( mod m ) 与
k ≡ k ′ ( m o d m ) k \equiv k' \pmod {m} k ≡ k ′ ( mod m ) ,则
k ′ k' k ′ 符合条件。而前一个式子在
k ′ > φ ( m ) k' > \varphi(m) k ′ > φ ( m ) 时可以由
k ≡ k ′ ( m o d φ ( m ) ) k \equiv k' \pmod{\varphi(m)} k ≡ k ′ ( mod φ ( m )) 推导得出(具体证明可设
r = k m o d φ ( m ) = k ′ m o d φ ( m ) r=k \bmod \varphi(m)=k' \bmod \varphi(m) r = k mod φ ( m ) = k ′ mod φ ( m ) ,那么
A r ≡ A k m o d φ ( m ) ≡ A k ′ m o d φ ( m ) ( m o d m ) A^{r} \equiv A^{k \bmod \varphi(m)} \equiv A^{k' \bmod \varphi(m)} \pmod{m} A r ≡ A k mod φ ( m ) ≡ A k ′ mod φ ( m ) ( mod m ) ,于是
A k m o d φ ( m ) + φ ( m ) ≡ A k ′ m o d φ ( m ) + φ ( m ) ≡ A k ′ ( m o d m ) A^{k \bmod \varphi(m) \ + \ \varphi(m)} \equiv A^{k' \bmod \varphi(m) \ + \ \varphi(m)} \equiv A^{k'} \pmod{m} A k mod φ ( m ) + φ ( m ) ≡ A k ′ mod φ ( m ) + φ ( m ) ≡ A k ′ ( mod m ) ),于是我们的问题最终转化为:求解线性同余方程组
{ k ′ ≡ k ( m o d φ ( m ) ) k ′ = k ( m o d m ) \begin{cases} k' \equiv k \pmod{\varphi(m)} \\ k' = k \pmod{m} \end{cases} { k ′ ≡ k ( mod φ ( m )) k ′ = k ( mod m ) 的一组大于
φ ( m ) \varphi(m) φ ( m ) 的解或判定无解。求解
k m o d φ ( m ) k \bmod \varphi(m) k mod φ ( m ) 以及
k m o d m k \bmod m k mod m 在
n n n 足够大时的值是可以用
P4139 中同样的做法来做的,而求解线性同余方程组则是 ExCRT 的经典应用,于是整道题就做完了。
对于每次询问,求欧拉函数值的时间复杂度为
O ( m ) O(\sqrt{m}) O ( m ) ,对
A ↑ ↑ n A \uparrow \uparrow n A ↑↑ n 求余的时间复杂度为
O ( log m ) O(\log m) O ( log m ) ,故整个程序的总时间复杂度为
O ( Q m log m ) O(Q\sqrt{m}\log m) O ( Q m log m ) 。