题目:
Your task is to calculate ab mod 1337 where a is a positive integer and b is an extremely large positive integer given in the form of an array.
Example1:
a = 2
b = [3]
Result: 8
Example2:
a = 2
b = [1,0]
Result: 1024
Credits:
Special thanks to @Stomach_ache for adding this problem and creating all test cases.
快速幂。
不过这题是10进制的快速幂,原理与二进制相同。
例如a^234=(a^100)^2*(a^10)^3*(a^1)^4
class Solution {
public:
int superPow(int a, vector<int>& b) {
long long ans = 1LL;
long long tans;
long long ta = a;
for (int i = b.size() - 1; i >= 0; i--) {
tans = 1LL;
for (int j = 0; j < b[i]; j++)
tans = tans * ta % 1337LL;
ans = ans * tans % 1337LL;
long long b = ta;
ta = 1LL;
for (int j = 0; j < 10; j++)
ta = ta * b % 1337LL;
}
return (int)ans;
}
};