快速幂算法
// 爱码岛编程
long long fast_pow(long long a, long long b) {
long long result = 1;
while (b) {
if (b & 1) // b % 2 == 1
result = (result * a);
a = a * a;
b >>= 1;
}
return result;
}
快速幂算法取模 a^b % p
// 爱码岛编程
long long pow_mod(long long a, long long b, long long p) {
long long result = 1;
a %= p;
while (b) {
if (b & 1) // b % 2 == 1
result = (result * a) % p;
a = a * a % p;
b >>= 1;
}
return result;
}