Description
给定 $T\ (T\leq 10^3)$ 组数据,每组数据包含一个正整数 $p\ (1 \leq p \leq 10^7)$,求 $2^{2^{2 \cdots}}(无限个 2) \bmod p$ 的值。
Source
Solution
前置知识:
在此题中,指数 $b = 2^{2^{2\cdots}}$ 一定满足 $b \geq \varphi(p)$,所以我们通过 扩展欧拉定理:
得到
设 $f(p) = 2^{2^{2\cdots}} \bmod p$,则有
我们就成功地化简了问题——把求 $f(p)$ 转化为求 $f(\varphi(p))$ 。
这个式子可以一直递归下去,直到 $p = 1$ 时返回 $f(1)=2^{2^{2 \cdots}} \bmod \varphi(1) = 0$ 。总时间复杂度为 $O(p + T\log^2 p)$ 。
Code
1 |
|