举个例子把:
A^5 = A*A*A*A*A 算了5次
而 (A²)² *A 算了3次
每次二分求幂,当n足够大的时候会节省大量时间;
求模部分详见同余定理
int PowerMod(int num, int n, int mod)//二分幂&&同余定理
{ // 把求模部分删去即为二分求幂
int res = 1;
num = num % mod;
while(n)
{
if (n&1) //n % 2 == 1
res = (res * num) % mod;
num = (num * num) % mod;
n >>= 1;
}
return res;
}