数論-高速乗算(テンプレート)

高速乗算の目的:a * b%modを計算すると、a * bはlonglongより大きくなります。

基本原理:コンピューターでの計算と加算の速度は、乗算よりもはるかに速いことがよくあります。高速乗算は、a * bを多項式に分解し、それらを乗算の分配法則によって加算することです。

日付を取ります:20 * 13、13をバイナリ1101に変換すると、20 * 2 ^ 0 + 20 * 2 ^ 2 + 20 * 2 ^ 3になります。(高速電力と同様)

ll 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;
}

 

おすすめ

転載: blog.csdn.net/qq_44132777/article/details/109664812