听说这个会加速乘法?其实不太理解,既然这个快那C++底层的乘法为什么不用这个。。
所以一般还是用于直接乘会爆long long,所以这个分解着做
ll qm(ll x, ll y, ll mod){
ll ret = 0;
while(y){
if(y & 1){
ret += x;
if(ret >= mod) ret -= mod;
}
x <<= 1;
if(x >= mod) { x -= mod; if(!x) return ret; }
y >>= 1;
}
return ret;
}