二进制乘法
快速二进制乘法:
有时我们要求对\(a,b\)两个数乘积取模,但是两数乘积太大,会爆LL,但是取模结果又不会爆,这时写高精度固然是非常难受的,所以我们可以用二进制乘法来避免它。
原理:
我们将a分解为二进制形式,对于每一个a上的“1”单独相乘,具体方法如下
代码:
int qmult(int a,int b)
{
int ans=0;
a%=MOD,b%=MOD;
while (a)
{
if (a&1)
{
ans+=b;
if (ans>=MOD) ans-=MOD;
}
a>>=1;
b=(b<<1)%MOD;
}
return ans;
}

浙公网安备 33010602011771号