快速乘法应用于两个很大的数相乘取模问题
快速乘和快速幂原理一样
主要用于是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; }
原文:https://www.cnblogs.com/lipu123/p/13961659.html