题解:P1405 苦恼的小明
LostKeyToReach · · 题解
根据欧拉定理,我们有:
那么我们推一波式子:
那么我们可以定义函数
递归实现即可。
有人问递归会不会爆栈,我们看一下
我们发现,当到第
那么这道题就解决了,代码如下:
ll phi(ll x) {
ll res = x;
int t = x;
for (ll i = 2; i * i <= t; i++) {
if (x % i == 0) {
res = res * (i - 1) / i;
while (x % i == 0) x /= i;
}
}
if (x > 1) res = res * (x - 1) / x;
return res;
}
int n;
ll a[1234568];
ll f(ll now, ll p) {
if (now > n) return 1;
if (p == 1) return 1;
return quick_pow(a[now], f(now + 1, phi(p)) % phi(p) + phi(p), p);
}
int main() {
read(n);
rep(i, 1, n, 1) {
read(a[i]);
}
write(f(1, 10007));
}