中国剩余定理

· · 个人记录

求最小整数解。

\begin{cases} x_1 \equiv a_1 (\bmod\ p_1) \\ x_2 \equiv a_2 (\bmod\ p_2) \\ ... \\ x_n \equiv a_n (\bmod\ p_n) \end{cases}

其中 p_1,p_2,...,p_n 两两互质。

考虑懒人解法:

对于一组方程 x \equiv a_1 (\bmod\ p_1) ,它的自然数解可以写成: x_1=kp_1+a_1\ (k \in N)

当我们把他放到 n 个方程组内考虑,希望这个 x_1 只在第 1 个方程组内有效,其他的方程组内,他都被 \bmod 成了 0

如果这样可行,就只用求 \sum x_i

M=\prod p_i,M_i=\dfrac{M}{p_i}

则有 x_i = M_i\times M_i^{-1}\times a_i

注意有时候 $M$ 巨大,要快速乘。 ### exCRT excrt 就更不屑了。 直接考虑合并两个方程: $$ \begin{cases} x \equiv a_1 (\bmod\ p_1) \\ x \equiv a_2 (\bmod\ p_2) \\ \end{cases} $$ 第一个柿子的通解写成 $x_1=kp_1+a_1\ (k \in N)$,把它带入第二个柿子 $kp_1\equiv a_2-a_1 (\bmod\ p_2)

直接 exgcd 求解 k ,无解就方程组无解。

得到特殊解 kp_1+a_1 之后得到合并后的方程:

x\equiv kp_1+a_1 (\bmod\ \mathrm{lcm}(p_1,p_2))

就这么搞 m-1 次即可。