學習筆記 - 中國剩餘定理&擴充套件中國剩餘定理
中國剩餘定理&擴充套件中國剩餘定理
NOIP考完回機房填坑
◌ 中國剩餘定理
處理一類相較擴充套件中國剩餘定理更特殊的問題:
在這裡要求 對於任意i,j(i≠j),gcd(mi,mj)=1 (就是互素)
不互素的話就只能用擴充套件演算法了……這也是中國剩餘定理與其擴充套件演算法的主要區別。
另外 中國剩餘定理 和 擴充套件中國剩餘定理 似乎沒有什麼關係,除了解決的問題比較相似,所以我就分開講了。
▫演算法
舉一個比較常用的例子(出自《九章算術》),求正整數x滿足:
先計算 3,5,7 的最小公倍數為 105
再計算出所謂的基礎數:
mod 3: 105/3=35 >> 35 mod 3 = 2 (因為35模3本來就餘2,就不需要操作) >> 基礎數是35
mod 5: 105/5=21 >> 21 mod 5 = 1 (1*3=3,所以需要乘3)>> 21*3 mod 5 = 3 >> 基礎數為 21*3=63
mod 7: 105/7=15 >> 15 mod 7 = 1 (1*2=2,所以需要乘2)>> 15*2 mod 7 = 2 >> 基礎數為 15*2=30
這3個基礎數加起來得到 sum=35+63+30=128
然後模 3,5,7 的最小公倍數就得到答案 ans=128 mod 105=23
▫證明
(背的結論……記不住具體證法,簡單證明一下正確性)
可以知道的是:對於帶餘除法 "a / b = c ... d",存在 "(ax) / b = (cx+dx/b) ... (dx mod b)",自己可以舉幾個例子感性理解一下。
對於集合(元素都互質)A={ a1,a2...an } 的最小公倍數lcm,lcm/ai 一定是A中除ai以外的元素的倍數。如果 lcm/ai mod ai = ki ,而且題目是 求出的數mod ai = ri ,如果問題有解,那麼一定存在整數 p ,使得(ki
另外一個性質:如果 x1,x2,...,xn 被 a 整除,而 xn+1 mod a = k ,那麼 (x1+x2+...+xn+1) mod a = k。
那麼我們現在將 a1~an 的基礎數都加起來得到 sum,一定滿足 sum mod ai = ri ,即已經符合題目要求。但是如果我們要求最小的數,我們可以取模 lcm ,因為 lcm mod ai = 0,所有模一個lcm不會影響到題目要求。
◌ 擴充套件中國剩餘定理
解決的問題很相似,只是沒有互質的要求。但是依據的演算法就完全不一樣了。
▫ 證明
個人覺得比中國剩餘定理好理解,但是建議先弄懂擴充套件歐幾里得
先只考慮2個元素,即求x:
得到一個奇怪的等式——
再轉換一下:
令
等式兩邊同時除以 gcd,得到 :
然後將它轉換為模運算的形式:
然後因為模運算不能作除法,我們定義:
接下來就可以轉換模運算了:
再轉回普通運算:
根據一開始的:
可以得到:
代回去,再移下項:
化簡一下式子:
所以就會發現:
OK……證畢!