欧拉降幂

喵喵喵~


众所周知: \(a^b \equiv\begin{cases}a^b & b<\varphi(m)\\a^{b\bmod \varphi(m)+\varphi(m) } & b\ge\varphi(m)\end{cases}\pmod m\)

同时,当 \(n>2\) 时,有 \(2\mid\varphi(n)\) 以及 \(\varphi(2^kn)=2^{k-1}\varphi(n)\le\dfrac{\varphi(n)}2(2\nmid n)\)。所以易得对 \(n\)\(\log\)\(\varphi\) 后其值固定为 1。

所以对于一个幂塔 \(a_1^{a_2^{a_3^{\cdots^{a_n}}}}\bmod p\),可以考虑递归求 \(a_2^{a_3^{\cdots^{a_n}}}\bmod\varphi(p)\),再据情况考虑是否加 \(\varphi(p)\)。容易发现,最多递归 \(\log\) 次,这是一件很棒的事。


下面有 3 道例题。


CF906D Power Tower

[Ynoi2016] 炸脖龙 I

上帝与集合的正确用法

给定 \(n\) 个数 \(w_1,w_2,...,w_n\) 与模数 \(m\)

给出 \(q\) 组询问,每次询问给出 \(l,r\),求 \(w_l^{w_{l+1}^{{...}^{w_r}}} \mod m\) 的值。


考虑对于一次询问 \(S(l,r,m)\) 规约到 \(S(l+1,r,\varphi(m))\),做完了。

上帝与集合由于指数一直是 2 的无穷幂塔,所以一定会加上 \(\varphi(m)\)。另外两题注意在快速幂时打个标记记录是否取过模。

posted @ 2024-11-30 20:07  Grisses  阅读(46)  评论(0)    收藏  举报
Document