1. 程式人生 > >[模板]中國剩餘定理/擴充套件中國剩餘定理

[模板]中國剩餘定理/擴充套件中國剩餘定理

中國剩餘定理(crt)

求解同餘方程組$\{x=a_i (\mod b_i)$,要求$b_i$互質

有公式$x = \sum{a_iM_it_i} , lcm是b的最小公倍數, M_i=lcm/b_i , t_i=M_i^{-1}(\mod b_i)$

因為感覺被excrt完爆所以看看得了233

擴充套件中國剩餘定理(?)(excrt)

$b_i$可以不互質

考慮已經滿足了前i-1個方程的解ans,前i個b的lcm是M

那麼前i-1個方程的通解就是$ans+kM$

那麼對於第i個方程,有$ans+Mx=a_i (\mod b_i)$,可以用exgcd求解

然後更新ans和M,繼續做即可

1 ll ans=0,M=1;
2 for(i=1;i<=N;i++){
3     ll x,y,a=M,b=B[i];
4     ll c=((A[i]-ans)%b+b)%b,g=exgcd(a,b,x,y);
5     x=slowmul(x,c/g,b/g);
6     ans=ans+M*x;M*=b/g;
7     ans=(ans%M+M)%M;
8 }