中国剩余定理就是求x:
x = a1 (mod m1)
x = a2 (mod m2)
...
x = ak (mod mk)
但要分m互质和不互质的情况
互质板子:
void exgcd(int a,int b,int &x,int &y)
{
if(b==0)
{
x=1;
y=0;
// return a;
}
int d=exgcd(b,a%b,x,y);
int tmp=x;
x=y;
y=tmp-a/b*y;
// return d;
}
LL ch()
{
int ans=0;
int lcm=1;
int x,y;
for(int i=0;i<n;i++)
lcm*=m[i];
for(int i=0;i<n;i++)
{
int k=lcm/m[i];
exgcd(k,m[i],x,y);
x=(x%m[i]+m[i])%m[i];
ans=(ans+k*a[i]*x)%lcm;
}
return (ans+lcm)%lcm;
}
非互质题: