中國剩餘定理 CRT

中國剩餘定理 CRT

正常版本CRT

要解的是一個很容易的東西
\[ \begin{aligned} x\equiv a_1(mod\ m_1)\\ x\equiv a_2(mod\ m_2)\\ ...\\ x\equiv a_n(mod\ m_n) \end{aligned} \]
保證\(m_1,m_2...m_n\)之間兩兩互質,求最小的\(x\)ui

\(M=\prod m_i\)spa

首先咱們肯定一點,咱們求出了任意一個知足條件的\(x\)以後,只須要對其模\(M\)就是最終的答案。class

由於\(M\)是全部數的\(lcm\)gc

考慮一下,對於每個\(a_i\),若是咱們可以求出一個數\(x_i\)方法

知足它是其餘全部\(m\)的乘積,即\(M_i=M/m_i\)的倍數,而且\(x_i\equiv 1(mod\ m_i)\)統計

也就是對於任意一個\(x_i\),知足\(x_i\equiv 0(mod\ m_k),k\ne i\)\(x_i\equiv 1(mode\ m_i)\)di

那麼最終的答案就會是\(\sum(a_ix_i)mod\ M\)display

深思熟慮的考慮如何求出\(x_i\)math

由於\(x_i\)\(M_i\)的倍數,因此\(x_i=kM_i\equiv 1(mod\ m_i)\)版本

因此\(k\)\(M_i\)在模\(m_i\)意義下的逆元。因此\(x_i\)就是\(k\)\(M_i\)倍,注意最終統計入結果的模數是\(M\)

因此,\(CRT\)的結果就是\(\sum (a_ik_iM_i)mod\ M\)

不正常版本CRT

要求的東西同上,不保證全部\(m_i\)互質。

咱們確定不能像上面那樣堆在一塊兒求了。

換個方法,假設咱們只有兩個方程。\(x\equiv a_1(mod\ m_1),x\equiv a_2(mod\ m_2)\)

怎麼算答案?

顯然是要知足:\(x=x_1m_1+a_1=x_2m_2+a_2\),而且\(x\)最小。

顯然是\(x_1,x_2\)都要儘量的小。

因此\(x_1m_1+x_2m_2=a_2-a_1\)

那麼\(exgcd\)能夠求解最小的\(x_1\),而後就能夠求得\(x=x_1m_1+a_1\)

這樣子就能夠同時知足這兩個方程了,由於方程有多個,

因此咱們把這兩個方程合併,假設當前求出來的解是\(x'\)

那麼咱們就新加入一個方程\(x\equiv x'(mod\ lcm(m_1,m_2))\)就行了。

相關文章
相關標籤/搜索