快速乘法+快速幂
快速乘法应用于两个很大的数相乘取模问题
快速乘和快速幂原理一样
主要用于是64bit整数乘法时会爆longlong但是写高精度又太麻烦的情况
模板为:
ll mul(ll a,ll b,ll mod){//快速乘法
ll ans=0;
while(b){
if(b&1){
ans=(ans+a)%mod;
}
a=(a+a)%mod;
b>>=1;
}
return ans%mod;
}
快速幂+快速乘法:
ll mul(ll a,ll b,ll mod){//快速乘法
ll ans=0;
while(b){
if(b&1){
ans=(ans+a)%mod;
}
a=(a+a)%mod;
b>>=1;
}
return ans%mod;
}
ll qpow(ll a,ll b,ll mod){
ll ans=1;
while(b){
if(b&1){
ans=mul(ans,a,mod)%mod;
}
a=mul(a,a,mod)%mod;
b>>=1;
}
return ans%mod;
}

浙公网安备 33010602011771号