『筆記』中國剩餘定理(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,請食用

相關文章
相關標籤/搜索