快速幂的一个模板:
//取模运算如果取模的数是负数,一般考虑加上一个mod变成正数后再取模(如果明确要求就用这个负数取模的话可以不用,但是一般不会这么做)
long long fastPower(long long base, long long power,long long mod)
{
long long result = 1%mod;
while (power > 0)
{
if (power & 1) //此处等价于if(power%2==1)
{
result = result * base % mod;
}
power >>= 1;//此处等价于power=power/2
base = (base * base) % mod;
}
return result;
}