快速乘(模板)

xqx_Zi_yu發表於2020-11-13

快速乘用途:計算a*b%mod,而且a*b大於long long。

基本原理:計算機中計算加法的速度往往比乘法快多了,而快速乘就是通過乘法分配律將a*b分解成多項式相加。

舉個棗子:20*13,將13轉化成二進位制1101,則就是20*2^0+20*2^2+20*2^3。(類似於快速冪)

void quick_mulitiply(ll a,ll b,ll mod) {
	ll res=0;
	while(b) {
		if(b&1) res=(res+a)%mod;
		a=(a+a)%mod;
		b>>=1;
	}
	return res;
}

 

相關文章