快速幂及快速乘法
快速幂:利用二进制解决乘方过高的问题,乘方次数过高可用(例如:nm,m>=1e8)
LL quick(LL n,LL m,LL mod){
LL ans,res;
ans = 1;
res = n%mod;
while(m){
if(m&1){
ans = (ans*res)%mod;
}
m>>=1;
res = (res*res)%mod;
}
return ans;
}
快速乘法:利用二进制相乘,可防止数据溢出(long long 相乘会溢出的情况可用)
#define LL long long
LL quick_mul(LL a,LL b,LL mod){
a = a%mod;
b = b%mod;
LL ans = 0;
while(b){
if(b&1){
ans += a;
if(ans >= mod) ans -= mod;
}
a<<=1;
b>>=1;
if(a>=mod) a -= mod;
}
return ans;
}

浙公网安备 33010602011771号