用於在 \(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 ...