互素數不能表出的最大數(源自動態規劃題:麥香牛塊)

原題如下:

農夫布朗的奶牛們正在進行鬥爭,因爲它們聽說麥當勞正在考慮引進一種新產品:麥香牛塊。奶牛們正在想盡一切辦法讓這種可怕的設想泡湯。奶牛們進行鬥爭的策略之一是“劣質的包裝”。“看”,奶牛們說,“如果你用只有一次能裝3塊、6塊或10塊的三種包裝盒裝麥香牛塊,你就不可能滿足想要一次只想買1、2、4、5、7、8、11、14或17塊麥香牛塊的顧客了。劣質的包裝意味着劣質的產品。”

你的任務是幫助這些奶牛。給出包裝盒的種類數N(1<=N<=10)和N個代表不同種類包裝盒容納麥香牛塊個數的正整數i(1<=i<=256),輸出顧客不能用上述包裝盒(每種盒子數量無限)買到麥香牛塊的最大塊數。如果在限定範圍內所有購買方案都能得到滿足,則輸出0。範圍限制是所有不超過2000000000的正整數。

 

由於數目非常龐大,不能簡單進行動態規劃,必須先進行數學分析縮小範圍。此題進行數學抽象,給定n個正整數{an},於是有集合S={a1*x1+a2*x2+...+an*xn,xi屬於N},求集合N-S 的屬性,以下先從n=2 開始闡述。

 

引理1:S={a*x + b*y, x,y屬於自然數N},當a、b 互素時,N-S爲有限集,其最大值爲 a*b-a-b;當a、b不互素時(a,b最大公約數大於1),則N-S 爲無限集

 

證明:

(1) 當a、b不互素時(a,b最大公約數大於1),則N-S 爲無限集

這個比較好證明,設p=gcd(a,b),則a*x+b*y必定可以寫成 p*z 的形式,由於p>1,則p* z + 1必定不屬於S,於是N-S 爲無限集

 

(2) 當a、b互素時,則N-S 爲有限集,且最大值爲a*b-a-b

首先證明 a*b-a-b 不屬於S,使用反證法,

a*b-a-b = a*x + b*y  => a*(b-1-x) = b*(1+y),由於 a、b互素,則有b-1-x>=b,這與定義矛盾,於是有a*b-a-b 必定不屬於S

 

然後證明任何一個數z > a*b-a-b,均能表示爲a*x + b*y(x,y屬於N),令z=a*b-a-b+i,因爲a、b互素,則i=a*m+b*n(m,n屬於整數,不是自然數),於是z=a*(b-1+m) + b*(n-1),當m、n均不爲負數時,z均可以表示爲a*x+b*y的形式,下面證明m、n有一個爲負數時的情況。

不失一般性,設i=a*x-b*y(x,y屬於N),我們可以做一個變換,確保y<=a-1,當y>=a時,設y=a*r+s(s<=a-1),則有i=a*x-b*(a*r+s) =a(x-br)-bs,即i表示爲a*x-b*y時,可以確保y<=a-1,此時必有x>=1。

z=a*b-a-b+a*x-b*y = a(x-1) + b(a-1-y),由於 x>=1,y<=a-1,所以z可以表示,命題得證。

此命題表明S 包含大於等於ab-a-b+1的所有整數

 

引理2:S={a*x + b*y + c*z, x,y,z屬於自然數N},當a、b、c互素時,N-S爲有限集,其最大值不大於MAX(ab,ac,bc)

 

證明

如果其中有兩個元素互素,比如gcd(a,b)=1,則由引理1得到N-S爲有限集,其最大值必定不大於ab-a-b,即不大於MAX(ab,ac,bc)

 

假設任意兩個元素均不互素,不失一般性,令ab=MAX(ab,ac,bc),p=gcd(a,b),於是有a*x+b*y+c*z=p*(a1*x+b1*y) + c*z,其中p和z互素,a1和b1互素,將a1*x+b1*y看作一個元素,運用引理1得到 N-S 的最大值爲pc-p-c,但由於a1*x+b1*y從a1b1-a1-b1之後纔開始連續,所以N-S的最大值必定小於pc-p-c+ p(a1b1-a1-b1) < pc + ab/p

只要證明pc + ab/p <ab即可,因爲p>=2則ab/p<=ab/2,因爲p<=a/2,c<b,則pc<ab/2,於是命題得證。

引理2的證明給我們提供瞭解決原問題的思路

 

 

定理:S={a1*x1+a2*x2+...+an*xn,xi屬於N},當a1i,a2,...,an互素時,N-S的最大值小於MAX(ai) * MAX(ai)

 

使用數學歸納法證明,n=2,3時已經證明,假設n-1時已經證明,以下證明n時

如果其中有n-1個互素,則問題直接得證,即以下的證明爲任意n-1個元素不互素的情況。不失一般性,假設n個數中a1和a2爲最大的兩個數,設p=gcd(a1,a2,...,an-1)

a1*x1+a2*x2+...+an*xn= p(a’1*x1+...+a’n-1*xn-1) + an*xn

根據歸納假設a’1*x1+...+a’n-1*xn-1至少從a’1a’2 開始連續,且運用引理1,可以得到N-S最大值小於p an -p- an  +p(a’1 a’2) < p an + (a1 a2)/2,利用與引理2相同的證明方法可以得到N-S的最大值小於a1a2

根據此定理,可以將原麥香牛塊問題的範圍限制到256*256之中,再使用動態規劃求解就可行了。

發佈了72 篇原創文章 · 獲贊 28 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章