『笔记』中国剩余定理(CRT)

定义

中国剩余定理(Chinese Remainder Theorem, CRT)可求解以下形式的一元线性同余方程组(其中 \(w_1,w_2,w_3……w_n\) 两两互质):ui

\[\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\) 有着很大的限制,因此在这里并不作过多说明spa

应用

仍是上面的方程组,求知足这个方程组的最小非负整数解 \(x\)ip

假设\(M=\prod_{i=1}^{k-1} \ \ lcm(w_i,M)\)rem

首先咱们已经假设求出了前 \(k-1\) 个方程的解 \(x_0\) ,那么前 \(k-1\) 个方程的通解即为get

\[x_0+i\times M \ \ (i\in Z) \]

那么如今引入第 \(k\) 个方程原型

那么也就是找出一个正整数 \(t\) 使得ast

\[x_0+t\times M\equiv b_i\ \ (\bmod w_k) \]

成立class

移项能够获得gc

\[t\times M\equiv b_i-x_0\ \ (\bmod w_k) \]

那么这个方程能够用扩欧求得解 \(t\)im

此时的答案 \(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)\)

直到完成为止

代码

完整代码OVO,请食用

相关文章
相关标签/搜索