快速乘(模板)

快速乘和快速幂原理一样
主要用于是64bit整数乘法时会爆longlong但是写高精度又太麻烦的情况
代码

#include

#define ll long long

using namespace std;

inline ll ksc(ll a, ll b, ll mod){
	ll ans = 0;
	while( b > 0 ){
		if( b&1 ) ans = (ans + a) % mod;
		a = ( a + a ) % mod;
		b >>= 1;
	}
	return ans;
}

还有一种用 long double 优化的代码

inline ll ksc(ll x, ll y, ll mod)
{
    return ( x * y - (ll) ( (long double) x / mod*y )*mod + mod ) % mod;     
}

你可能感兴趣的:(分治,快速乘)