对于 a^b mod k,怎么求解?
首先a*b mod c = (a mod c )*b mod c
将b表示成二进制形式 b = bnbn-1…b1b0
a^b mod k = a^(bnbn-1…b1b0) mod k
= a^(b0*2^0)*a^(b1*2^1)*…*a(bn*2^n) mod k
= c0*c1*…*cn mod k
= (c0 mod k) * c1 mod k)*…*cn) mod k
n^m%mod代码
-
long long Pow(long long n ,long long m, int mod)
-
{
-
long long res = 1;
-
while(m >= 1)
-
{
-
if(m & 1)
-
{
-
res = (res * n ) % mod;
-
}
-
n = n * n % mod ;
-
m >>= 1;
-
}
-
return res;
-
}