题目
思路
对a和b的每一位做幂运算,幂运算通过快速幂实现。计算a的b次方,从低到高对b的每一位遍历,如果这一位是1就把结果乘当前的a,然后再把a*a赋给a,b右移一位。
代码
class Solution {
public:
const int mod=1337;
int pow(int a,int b){ //快速幂
int ans=1;
a%=mod;
while(b){
if(b&1) ans=ans*a%mod;
a=a*a%mod;
b>>=1;
}
return ans;
}
int superPow(int a, vector<int>& b) {
if(a==1) return 1;
int ans=1;
for(int e:b)
ans=(long)pow(ans,10)*pow(a,e)%mod;
return ans;
}
};