解线性同余方程组
CRT
不说了.
struct CRT{
ll de[crtn],nn[crtn];//product of de should be within range<long long>()
inline ll operator()(int n){
ll M=1,ans=0;
fon(i,n) M*=de[n];
fon(i,n){
ll t=M/de[n],inv=inv_fast(t,de[n]);
ans=(ans+t*inv*nn[n])%M;
}
return (ans+M)%M;
}
};
CRT只能处理模数互素的情况.
增量法
每次将两个同余方程合并成一个.
设这两个方程:
[xequiv apmod{b}
]
与
[xequiv cpmod{d}
]
显然
[xequiv cpmod{frac{d}{(b,d)}}
]
就可以CRT一下...就没了?