1. 本质
实际上,扩展中国剩余定理(后简称Ex_CRT
)就是中国剩余定理(后简称CRT
)的升级版,功能比CRT
强,时间复杂度也差不多,还比CRT
好理解,直接单调队列它
(可能由于码风问题,我的)Ex_CRT
容易出一些玄学BUG,从某种意义上讲,还不如写CRT
来的快
让我们回顾一下CRT
的一般形式:
{x≡a1(modb1)x≡a2(modb2)⋯x≡an(modbn)\begin{cases}x\equiv a_1\pmod{b_1}\\x\equiv a_2\pmod{b_2}\\\cdots\\x\equiv a_n\pmod{b_n}\end{cases}⎩⎨⎧x≡a1(modb1)x≡a2(modb2)⋯x≡an(modbn)
其中 b1,b2,⋯ ,bnb_1,b_2,\cdots,b_nb1,b2,⋯,bn 均两两互质
而Ex_CRT
能解决没有互质限制的同余方程组
2. 求法
考虑数学归纳法
假设我们已经解决了前面 i−1i-1i−1 个方程,设得到的最小整数解为 xi−1x_{i-1}xi−1,并设 lcm{b1,b2,⋯ ,bi−1}=Li−1\operatorname{lcm}\{b_1,b_2,\cdots,b_{i-1}\}=L_{i-1}lcm{b1,b2,⋯,bi−1}=Li−1
显然,我们可以得到前 i−1i-1i−1 个方程的通解:xi−1+k×Li−1x_{i-1}+k\times L_{i-1}xi−1+k×Li−1
将这个通解带入第 iii 个方程中:
(xi−1+k×Li−1)≡ai(modbi)(x_{i-1}+k\times L_{i-1})\equiv a_i\pmod{b_i}(xi−1+k×Li−1)≡ai(modbi)
这本质上就是一个二元一次方程,用Ex_gcd
即可解决
如果有解,那么,我们就可以得到 xi,Lix_i,L_ixi,Li,就可以继续推下去;反之,说明前 i−1i-1i−1 个方程不能和第 iii 个方程同时成立,原方程无解
顺带提一句,Ex_CRT
的模数应该是 LnL_nLn