中国剩余定理模版
//求解x = ai(mod mi)方程组
int extend_euclid(int a,int b,int &x,int &y)
{
if(!b)
{
x = 1;
y = 0;
return a;
}
int d = extend_euclid(b,a%b,x,y);
int t = x;
x = y;
y = t - a / b * y;
return d;
}
int China(int r)
{
int M = 1, ans = 0;
for (int i = 0; i < r; ++i)
M *= m[i];
for(int i = 0;i < r;i++)
{
int N = M/m[i];
int x, y;
extend_euclid(N, m[i], x, y);
ans = (ans+a[i]*N*x)%M;
}
ans = (ans - a[r])%M;
return (ans+M)%M;
}