题意:
思路:
欧拉降幂公式为:
a
b
m
o
d
p
=
a
b
m
o
d
p
h
i
(
p
)
m
o
d
p
a^b\mod p=a^{b\mod phi(p)} \mod p
abmodp=abmodphi(p)modp
其中
p
p
p为质数,
p
h
i
(
p
)
phi(p)
phi(p)为
p
p
p的欧拉函数
由于题目里给出的
p
p
p是固定的
1337
1337
1337,所以其欧拉函数值为
1140
1140
1140,可以求出
b
m
o
d
p
h
i
(
p
)
b\mod phi(p)
bmodphi(p)的值。
再用快速幂求剩下的值就可以了
代码:
class Solution {
public:
long long ksm(long long a,long long b,long long p){
long long res=1;
while(b){
if(b&1) res=res*a%p;
a=a*a%p;
b=b/2;
}
return res;
}
int superPow(int a, vector<int>& b) {
long long c=1140;
long long sum=0;
for(int i=0;i<b.size();i++){
sum=(sum*10+b[i])%c;
}
return ksm(a,sum,1337);
}
};