快速乘和快速幂原理一样
主要用于是64bit整数乘法时会爆longlong但是写高精度又太麻烦的情况
代码
#include<bits/stc++.h>
#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;
}