快速冪+快速乘法
在做題的過程中,經常遇到計算a^n,常常採用的策略就是用快速冪
快速冪的程式碼是:(見下方),可是問題來了,如果當mod很大的時候在計算x*x的會爆long long.所以我們可以用類似於快速冪的方法把乘法拆分成加法來算。這種方法叫做,快速乘法或者高精度程式碼見下邊;
long long Mul(long long a, long long b) {
long long res = 0;
while(b) {
if(b & 1) {
res = (res + a) % p;
}
b >>= 1 ;
a = (a + a) % p;
}
return res;
}
long long mod_pow(long long x,long long n,long long mod)
{
long long res= 1;
while(n>0)
{
if(n&1)
res=res*x%mod;
x = x*x%mod;
n>>=1;
}
return res;
}