- 循环求余
public long remainder(int x, int a, int p) { // (x^a)%p
long rem = 1;
for (int i=0; i<a; ++i){
rem = (rem * x)%p;
}
return rem;
}
- 快速幂
private long quickPow(int x, long n) {
long res = 1;
long tt = x;
while (n != 0) {
if ((n & 1) == 1) {
res *= tt;
res %= 1000000007;
}
tt *= tt;
tt %= 1000000007;
n /= 2;
}
return res;
}