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
题目链接:https://leetcode.com/problems/super-pow/
题目分析:ans = ans^10 + qpow(a, b[i])
public class Solution {
public static final int MOD = 1337;
public int qpow(int x, int n) {
int res = 1;
x %= MOD;
while (n > 0) {
if ((n & 1) == 1) {
res = (res * x) % MOD;
}
x = (x * x) % MOD;
n >>= 1;
}
return res;
}
public int superPow(int a, int[] b) {
int ans = 1, len = b.length;
for (int i = 0; i < len; i ++) {
ans = (qpow(ans, 10) * qpow(a, b[i])) % MOD;
}
return ans;
}
}