总结-exCRT

问题:

求最小非负整数x,使其满足:

\[\begin{cases}x&\equiv&r_1&\pmod {p_1}\\x&\equiv&r_2&\pmod {p_2}\\ &&\vdots\\x&\equiv&r_n&\pmod {p_n}\end{cases} \]

同时不保证模数互质。

解法

考虑同余方程两两合并

\[\begin{cases}x&\equiv&r_1&\pmod {p_1}\\x&\equiv&r_2&\pmod {p_2}\\ \end{cases} \]

合并并移项\(1\).\(r_2-r_1=p_1x_1-p_2x_2\),设\(p=lcm(p1,p2),g=gcd(p1,p2)\)
我们可以用\(exGCD\)算出\(p_1x_1-p_2x_2=g\)的最小整数解
显然如果\(g\not| (r_2-r_1)\)则方程无解。
否则有解
那么我们可以得到这个方程(\(1\))的解\((x1,x2)\)
那么将\(x1\)代入第一个同余式得到一个特解\(X\)
这时考虑两个同余式的周期——它们每\(p\)(定义在上面)次能取到一个相等值
结合已经解得的一个特殊解,就可以得到通解\(x\equiv X (\mod p)\)

例题

模板题目传送-Luogu4777
应用题目传送-Luogu4774

posted @ 2018-08-08 21:00  functionendless  阅读(212)  评论(0编辑  收藏  举报