快速取模
现在这个版本有问题,代码来源也有问题!!!
代码从这里改过来的,优化了一下,这下能直接写 mod-2 和 %mod 了。如果侵权就删了。
struct Mod{
long long m,p;
Mod(long long pp){
m=((__int128)1<<64)/pp;
p=pp;
}
operator long long(){
return this->p;
}
}mod(在这里改模数);
template<class T>T operator % (T a,Mod b){
return a-(((__int128)a*b.m)>>64)*b.p;
}
直接调用 %mod 即可,不用(%mod+mod)%mod。