快熟幂运算
原理
有2^99 = 2^50 * 2^49 = 2^25 * 2^25 * 2^25 * 2^24 = 2 * 2 * 2 * 2 * 2 * 2 * 2 * 2......
又 2^99 [十进制 ] = 2 ^ (1100011) [转换为2进制]
所以所以 2^99 [十进制 ] = 2^(1000000) * 2^(100000) * 2^(11) [转换为2进制]
由于需要使用快速幂运算的大多数都是数值范围大于longlong的 ,故需要对某个数取模
代码
int quickPow(ll a, ll b, ll c)
{
// 快速幂运算
// a的b次方 对c取余
ll ans = 1;
while (b)
{
if (b & 1)
ans = (ans * a) % c;
a = (a * a) % c;
b >>= 1;// 每次除于2
}
return ans;
}