1.1快速幂
ll quick_pow(ll a,ll b,ll mod) {
ll res=1;
a%=mod;
while(b) {
if(b&1)(res*=a)%=mod;
(a*=a)%=mod;b>>=1;
}
return res%mod;//mod==1
} 1.2快速乘
ll quick_mul(ll a,ll b,ll mod) {
ll res=0;
while(b) {
if(b&1)
(res+=a)%=mod;
(a<<=1)%=mod;//注意此处会不会溢出
b>>=1;
}
return res;
}
typedef unsigned long long ull;//浮点运算不太可靠
ll quick_mul(ll a,ll b,ll mod) {
ll c=(long double)a/mod*b;//a*b/mod
ll res=(ull)a*b-(ull)c*mod;//a*b-a*b/mod*mod
return (res+mod)%mod;
}
京公网安备 11010502036488号