求a^b%c,(1 <= a,b <= 2^62, 1 <= c <= 10^9)
最基本的快速幂
_LL mod_exp(_LL a, _LL b, int c)
{
_LL ans = 1;
_LL t = a%c;
while(b)
{
if(b&1)
ans = ans*t%c;
t = t*t%c;
b >>= 1;
}
return ans;
}
因为c在long long范围内,中间两个long long 相乘的时候会超long long。所以对乘法再写一个快速乘法的函数,将乘法变为加法