『笔记』中国剩余定理(CRT)
定义
中国剩余定理(Chinese Remainder Theorem, CRT)可求解如下形式的一元线性同余方程组(其中 \(w_1,w_2,w_3……w_n\) 两两互质):
\[\begin{cases}
x\equiv b_1\ \ (\bmod w_1) \\x \equiv b_2 \ \ (\bmod w_2)\\x \equiv b_3 \ \ (\bmod w_3)\\x \equiv b_4 \ \ (\bmod w_4)
\\ ……
\\x \equiv b_n \ \ (\bmod w_n)
\end{cases}\]
然而这个东西相对于同样可以解决这个问题的\(excrt\) 有着很大的限制,所以在这里并不做过多说明
应用
还是上面的方程组,求满足这个方程组的最小非负整数解 \(x\)
假设\(M=\prod_{i=1}^{k-1} \ \ lcm(w_i,M)\)
首先我们已经假设求出了前 \(k-1\) 个方程的解 \(x_0\) ,那么前 \(k-1\) 个方程的通解即为
\[x_0+i\times M \ \ (i\in Z)
\]
那么现在引入第 \(k\) 个方程
那么也就是找出一个正整数 \(t\) 使得
\[x_0+t\times M\equiv b_i\ \ (\bmod w_k)
\]
成立
移项可以得到
\[t\times M\equiv b_i-x_0\ \ (\bmod w_k)
\]
那么这个方程可以用扩欧求得解 \(t\)
此时的答案 \(x\) 即为 $x_0+t \times M $
实现
注:该实现仅代表本人的一点见解,由于初学,知识浅薄,仅能理解到表面,如有差错请指出
首先可以把\(M=m_1,x=b_1\)用第一个方程作为基层来一步步求得后面的方程
当我们通过扩欧求得的 \(t\) 的时候,此时我们是求得的方程原型为
\[t\times M+y\times w_k=gcd(M,w_k)
\]
要想进一步求得真正的 \(t\) 还要乘上 \(c/gcd(M,w_k)\)才可以,并且此时的模数可以为 \(b\),应用龟速乘进行求解即可
然后更新\(M=M\times w_k/gcd(M,w_k)\)
直到完成为止