孙子定理,模线性同余方程
参考博客
中国剩余定理
解线性同余方程,运用拉格朗日插值法,得孙子定理
模板
int m[maxn];
int China(int a[],int n,int b[])//其中a[]是模数,b[] 是余数
{
int M = 1;
for(int i = 0;i < n;++i)
M *= a[i];
int ans = 0;
for(int i = 0;i < n;++i)
{
int Mi = M/a[i];
LL x,y;
ex_gcd(Mi,a[i],x,y);
ans += b[i] * x*Mi;
}
ans = (ans%M + M) %M;
return ans;
}
扩展
如果模数两两不互素,就合并两个模数
假设
则有
利用欧几里得扩展求出 带入1 求出