美國史丹福大學的麥卡錫提出的
設有兩個自然數x、y,2<=x<=y<=99,s先生知道這兩個數的和s,p先生知道這兩個數的積p,他們二人進行了如下對話:
s:我確信你不知道這兩個數是什麼,但我也不知道。
p: 一聽你說這句話,我就知道這兩個數是什麼了。
s: 我也是,現在我也知道了。
現在你能通過他們的會話推斷出這兩個數是什麼嗎?(當然,s和p先生都是非常聰明的)
方法一:
我把思路說一下吧
1.s先生自己不知道x,y
說明和數s不是4,5,197,198
2.s先生知道p先生不知道x,y
首先,什麼樣的數p先生可以知道呢?
如s=8
8=2*4 8=1*8 後者是不可能的( x,y>=2 )
又如 s=25
25=5*5 只有一種
這樣p先生就能知道x,y
這說明s分解後 s=m1+n1=m2+n2=.....
m1*n1 分解成 乘積 的形式有 兩種或兩種以上,
若 s=11
11=2+9 2*9=18 18=2*9=3*6
11=3+8 3*8=24 24=2*12=3*8=4*6
11=4+7 4*7=28 28=2*14=4*7
這樣s先生可以確定p先生不能知道x,y
所以s先生知道的 和數s 是如下的數
sa=sa也不可以是29,因為29=7+11+11,則x,y=88,11,
同樣得到sa=
3.p先生聽了s先生的話後,知道了x,y
我們可以想像p先生根據s先生的話,已經知道s先生知道的和數是集合sa中的數
若自己所知道的乘積p分解成m*n後 其中有乙個(m+n)是集合sa中的數
則 m,n就是所求的數x,y
如 p=18
18=2*9 2+9=11
18=3*6 3+6=9
11屬於sa
x,y就是 2 和 9
若p=72
72=2*36 2+36=38
72=3*24 3+24=27
......
72=8*9 8+9=17
其中27,17都屬於sa
於是72被排除了
所以p先生所知道的乘積是如下
pb=所知道的x,y是乘積在pb中,且 乘積分解後的兩數的和只有乙個 在sa中的數對,記為
xy=4.s先生也知道了x,y
可以知道,這時s先生也知道p先生知道的數的範圍xy
如果s分解後的兩數s=m+n,(m,n)只與xy中的乙個數對相同
這樣,s先生也就找到了x,y ,但是沒有這樣的數。
方法二:
我看到過答案,這是根據我的理解寫下的
1、s:我確信你不知道這兩個數是什麼,但我也不知道。
為什麼s先生這麼確定?換句話說p先生得到怎樣的組合就能立刻知道mn的值呢?
先看看哪些情況下p先生能立刻得到答案
(1)mn不能同時為質數。
mn為質數,那麼他們的乘積分解成兩個因子乘積的可能性就唯一了,那麼p先生就會立刻得知mn的值。
譬如34=1*34=2*17,因為nm是大於等於2的,那麼1*34這樣的組合是不可能的,那麼mn就是2和17。
mn不為質數,那麼他們可能之中有1個質數,或者2個同為合數。
(2) 如果mn中有乙個質數,那麼那個質數不會大於50
如果mn有乙個大於50,那麼他們分解成兩個因子乘積的可能性中,其他的分解方式都會有乙個因子會超過100,然麼分解方式必然會被p排除,那就只剩下一種方式,p也就立刻知道答案。
譬如318 = 6*53 = 3*106 = 2*159,因為mn小於等於99,那麼後兩種可能性肯定被排除。mn就肯定是6,53。
(3) 如果mn都是合數,那麼都不會大於50
理由同上。可就是p分解因子,只有一種情況下mn是小於100的,其他情況mn必有一數大於等於100。
其實mn的積也不會是8或者27,因為8 = 2*4 27=3*9,分解因子也就一種情況
mn的值在以上情況下p先生可以立刻知道答案,那麼也就是說s先生看到mn的和可以立刻推理出mn不可能存在上述的情況
(4)s不能分解成三個這樣的質數之和:
如果s=29=7+11+11.那麼x,y=11,88,或7,121 後面一種不符合。
又如果s=35=7+11+17,那麼x,y=7,187或11,119或17,88 前面兩種不符合。
(1)s肯定是奇數
s肯定是奇數,如果s是偶數,那麼mn有可能是質數。(原作者引用了哥德**猜想:每乙個大於2的偶數都是兩個素數的和。雖然這個猜想沒有證明,但是在100範圍以後可以實驗證明這個猜想是正確的。如果有例外的話,這個猜想也就不會這麼有名了。也就是說4-100範圍以內的偶數都可以用兩個質數的和表示。)
(2)mn的和不能大於54
這個推測的依據是建立在上面2、3之中的。因為s先生確信p先生不知道mn的值,所以2、3的情況是不會從mn的和中反應的。
(3)s-減去2的值不是質數
在質數中,2是乙個特例,他是質數中唯一的偶數。既然mn不能同時為質數,那麼s減去2的值也就不是質數了。
(4)s不等於29,35,37,41,47,51,53.
有上得s只能取11,17,23,27。
2、p: 一聽你說這句話,我就知道這兩個數是什麼了。
p先生和我們一樣,現在知道mn的和就只有上面的可能了。他只要把mn的積分解兩個因子乘積,所有可能性中,有且只有一組的可能性中兩個因子的和剛好是上面11個數中的乙個,那麼p先生就知道mn的值了。
假設p = 30 = 5*6 = 2*15,而5+6=11,2+15 =17,11和17都在上面11個數之中,那麼p先生就無法判斷mn到底是哪組數。所以p就不會等於30。
既然知道p先生的判斷方法,現在就從11個數出發,乙個個的推導。
3、s: 我也是,現在我也知道了。
s先生根據p先生的話知道了mn的積分解因子,只有一組的因子之和為11個數中間的乙個。而s先生同時也立刻知道mn的值。我們可以推斷,如果把mn之和拆成數個由乙個奇數和乙個偶數的組合,只有乙個組合符合下面的條件:這個奇數和偶數的乘積符合第2條p先生的判斷,也就是把這個積分解成兩個因子乘積,所有分解情況中,有且只有一組的情況中兩個因子的和剛好是上面11個數中的乙個。這樣s先生也就能知道mn的值了
我們只要把11個數拆成若干種奇偶組合,如果有2個或者2個以上的組合滿足p先生判斷條件,那麼這個數就不是mn的和。:
(1)11 = 2+9=4+7=6+5=8+3
2*9 = 18 = 3*6,3+6=9不在10個數中,那麼2*9符合。
4*7=28=2*14,前面說過mn是一奇一偶,2*14不考慮,4*7符合。
6*5=30=2*15,而6+5=11,2+15=17,兩個數都在11個數中,那麼p先生是無法判斷,所以這個組合可以略過。
8*3 = 24 = 2*12=4*6,,那麼2*12,4*6不用考慮,8*3符合
現在有3組數字符合,那麼11就不是mnd的和了
從上面看,如果把11拆成2的次方和乙個質數的組合,那麼只有一種分解是一奇一偶,其他的情況都是2個偶數。(4,7) = (2^2,7),(3,8) = (3,2^3),這樣的組合分解就具有唯一性,就能滿足我們的要求。11可以拆成2個這樣的組合,11就可以排除了。
(2)23 = 2^2+19 = 2^4+7
27 = 2^2+23 = 2^3+19
上面是數可以拆成2組2的次方和乙個質數,也就是有2組符合p先生的判斷,故這些數可以排除,那就只剩下17,29了
(3)29 =16+13=2+27
2*27 = 54 =3*18=6*9,符合
16*13 是2^4和13,13是質數,肯定符合
29有2組符合,所以29排除。
(4)現在就只剩下17了。
17=4+13=6+11=7+10=8+9
4*13=52,6*11=66,7*10=70,8*9=72都只有一組符合。排除故無解。
當 「HTTP」 先生遇上「S」小姐
情人節的晚上,天空中淅淅瀝瀝的下著帶有些寒意的小雨。http 先生孤零零的坐在咖啡廳中,對著面前的電腦發呆。他有意的遮蔽掉了周邊情侶們的竊竊私語,這對單身的他來說是 也是一陣陣傷害。這時,咖啡廳的門被開啟了,風姿綽約的 s 小姐出現在 http 先生的眼中。當 http 先生遇見 s 小姐,會產生怎...
L先生與階乘
沒錯,可憐的l先生又遇到了一道數學難題!n的階乘的末尾有多少個0?多測試例,處理到檔案結束。總測試例數量 15000 每行有乙個測試例,為乙個非負整數n 0 n 15000 每個測試例對應的輸出佔一行 1 230 00 思路 如果我們要判斷出0的個數,如果我們直接求n 那麼資料會很大,資料可能溢位,...
3675 唐納德先生與假骰子
單點時限 6.0 sec 記憶體限制 1024 mb 嗨,唐納德先生又來了。他又帶了一枚假骰子,這個骰子的各個面的點數依然是 1,2,3,4,5,6,但是六個面向上的概率卻不一定都是 1 6,而變成了 p1,p2,p3,p4,p5,p6。現在它要跟你玩乙個遊戲。首先你也得準備一枚骰子,各個面的點數同...