描述
給定 顆彈珠和兩種盒子,且兩種盒子的花費和容量分別為 、 和 、,其中 、、、 和 都是正整數,現在用數量不定的兩種盒子裝彈珠,並且所有盒子都必須裝滿,若能辦到,問在最低花費下,兩種盒子的所需個數為多少。
思路
令 和 分別為兩種盒子所需的數量,則題目可以表述為
且 並同時滿足
第一層
既然 的上限是 ,就不浪費篇幅討論暴力解了,直接進入主題。
第二層
式 顯然為二元一次丟番圖方程式,並且容易想到(?)貝祖等式,貝祖等式的內容為
令 和 為整數且兩者的最大公因數為 ,則存在整數 和 使得 。
據此有
觀察式 和式 ,兩者的不同在於等號右邊分別為 和 ,當 為 的整數倍時,式 必然會有整數解,即 ,其中 r 為整數。但是如果 不為 的整數倍時,式 會有整數解嗎?答案為否,這是因為 為 的整數倍是式 有整數解的必要條件(見證明:命題一),所以找到 是當前的首要目標。
利用擴展歐幾里得演算法,可以在求得 的同時,得到一組滿足式 的解,稱其為 (這又被稱為 的一組貝祖係數)。若 模除 不為 ,表無論 和 怎樣組合都不會得到 ,也就是無解;若為 ,則可以透過將 乘上 得到一組滿足式 的解,稱其為 。
考慮式 ,知道其法向量為 ,根據兩正交向量內積為 的性質,可以算出其方向向量可為 ,利用方向向量和 得到其參數式為
由於 和 為非負整數,故 的取值範圍並非為全體實數,但也不是整數,為什麼呢?先討論 ,因為 為整數,為使 為整數,則 也得為整數,考慮 可以形成的最小正整數為 ,由於 是整數,所以 必須是以 為分母,任意整數為分子的分數,為方便討論,把分母移給 ,令 為 的分子,這樣對任意整數 ,可以得到相應的整數 ,同理, 也能以 表示,改寫式 得
把式 帶入 ,得到
帶入後,原本關於 和 的函數轉變為關於 的函數,同時不難發現 和 都為整數常數,也就是說 是線性的,那麼只要知道 的上下界並帶入 ,就可知道 是嚴格遞增或嚴格遞減函數,並得知最小值發生在何處。
現在來推 的範圍,考慮 和 不能為負數,有 和 ,綜合式 有
整理式 ,得到
所以 的範圍為 ,若該範圍中不存在任何整數,表無解,否則按前述方法求得 ,再把 帶入式 回推得出 和 ,即為式 的答案。
範例
A. 求 ,得到 。
B. 藉由回推求 的過程得到 的一組貝祖係數 。
C. 模除 為 ,繼續。
D. 求 ,得 。
E. 求 ,得 ,繼續。
F. 由於 ,取 。
G. 將 帶入式 ,得到答案為 。
結論
本題結合了數論與函數的應用,可謂是相當精彩,除非有超強的數學直覺,否則在不知道貝祖定理、擴展歐幾里得演算法或數學推理能力不足的情況下(完全在說我自己),要解出本題是有些難度的。
備註
- 文中關於貝祖等式的說明翻譯自 Bézout's identity。
- 顯然當 且 時式 無法被滿足,可以事先檢查避免多餘的運算,不過不檢查也不會出錯,因為這會在步驟 E. 得到無解。
- 不會是水平線,因為題目表明當式 有解時,可以假設其解唯一。
- 範例的 A. 和 B. 在擴展歐幾里得演算法中是同時進行的。
證明
命題一:若 存在整數解,則 為 的整數倍。
令 表 ,因為 和 為 的整數倍,不仿設 和 ,其中 。由於存在整數解使得 成立,故 也成立,整理得 ,顯然 為一整數,證畢。
Gitalking ...