同餘複習筆記?

2022-09-04 22:42:22 字數 2160 閱讀 1277

用於在 \(a\) , \(b\) 已知的情況下求出一組 \(x\) , \(y\) 的任意解滿足:ax+by=c

根據裴蜀定理,此方程有解的充要條件為 \(gcd(a,b)|c\)

於是我們可以將ax+by=c簡化為ax+by=gcd(a,b)前面方程的解不過是後面方程的解擴大整數倍。

\[\\

ax+by=gcd(a,b)

\\gcd(a,b)=gcd(b,a\%b)

\\可以得出:bx'+(a\%b)∗y'=gcd(b,a\%b)

\\又因為:a\%b = a-\lfloor \frac\rfloor *b

\\所以:a*y'+b*(x'-\lfloor \frac \rfloor*y') = gcd(a,b)

\\所以原方程中的一組任意解為:

\begin

x=y' \\

y=x'-\lfloor \frac \rfloor *y'

\end

\]遞迴求解即可

inline void exgcd(int a,int b,int &x,int &y)//其實這個時候y可以為任意數。(因為y前的係數b=0)

exgcd(b,a%b,x,y);

int z=x;x=y,y=z-y*(a/b);

return;

}

即 \(a*inv[a]=1 (mod \ m)\)

用擴充套件歐幾里得求逆元的前提是 \(a,m\) 互質

原方程可以化簡為:

\(a*inv[a] + my = 1\)

因為 \(a,m\) 互質,所以原式可以變為:

\(a*inv[a] + my = gcd(a,m)\)

就是上面的式子。

注意,此時求出的逆元很有可能為負,需要 (x+m)%m 強制變為正。

為什麼此時求出的就是逆元呢?

移項一下:

\(a*inv[a] = 1-my\)

即 \(a*inv[a] = 1(mod \ m)\)

得證。求解形如

\[\begin

x \equiv a_1 (mod \ m_1) \\

x \equiv a_2 (mod \ m_2) \\

x \equiv a_3 (mod \ m_3) \\

... \\

... \\

x \equiv a_k (mod \ m_k) \\

\end

\]其中 \(m_i\) 互質,求出最小的滿足上述條件的 \(x\)

令乙個 \(m=\prod _ ^ m_i \ \ m_i=\frac\)

\(t_i\) 為 \(m_i\) 在 \(mod \ m_i\) 意義下的逆元,即\(m_i*t_i\equiv1(mod \ m_i)\)

所以 \(m_i\) 與 \(m_i\) 也互質。

那麼:乙個解 \(ans = \sigma_^ (a_i*m_i*t_i)\)

證明:對於任意的 \(j \neq i\)

\(m_i | m_j\) 所以 \(a_j*m_j*t_j =0(mod \ m_i)\)

而因為 \(m_i*t_i \equiv 1(mod \ m_i)\)

所以 \(a_i*m_i*t_i=a_i(mod \ m_i)\)

對於任意的 \(i\) 上述證明都是成立的,由此當前得到的解 \(ans\) 是滿足上面的式子的。

而最小解則為 \(ans \ \% \ m\)

(上面有很多步,不同步的模數是不同的,比如 \(t_i\) 是 \(m_i\) 在 \(mod \ m_i\) 意義下的逆元,而最後需要 \(\%\) 的是 \(m\))

inline void exgcd(ll a,ll b,ll &x,ll &y)

exgcd(b,a%b,x,y);

ll z=x;x=y,y=z-y*(a/b);

return;

}int n;

ll a[n],m[n],m[n],mul=1,inv[n],tmp,ans;

int main()

print(ans%mul);

return 0;

}

持續咕咕咕。

同餘運算性質

100除以7的餘數是2,意思就是說把100個東西七個七個分成一組的話最後還剩2個。餘數有乙個嚴格的定義 假如被除數是a,除數是b 假設它們均為正整數 那麼我們總能夠找到乙個小於b的自然數r和乙個整數m,使得a bm r。這個r就是a除以b的餘數,m被稱作商。我們經常用mod來表示取餘,a除以b餘r就...

同餘及其性質

把數論裡的一些零散的知識總結一下 a模b,即a除以b的餘數,記做 a mod b 或 a b 同餘,用符號 表示,若a m b m則稱a與b關於m同餘,記做 a b mod m 本文中,a與b的最大公約數記為 a,b 最小公倍數記為 a,b a能整除b記為a b 性質1 a a mod m 反身性 ...

同模餘定理

宣告 借鑑高手!一 同餘 對於整數除以某個正整數的問題,如果只關心餘數的情況,就產生同餘的概念。定義1用給定的正整數m分別除整數a b,如果所得的餘數相等,則稱a b對模m同餘,記作a b mod m 如 56 0 mod 8 定理1整數a,b對模m同餘的充要條件是 a b能被m整除 即m a b ...