[模板]中国剩余定理/扩展中国剩余定理

中国剩余定理(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 }

猜你喜欢

转载自www.cnblogs.com/Ressed/p/10089197.html