<noscript id="lol87"></noscript>
  • <form id="lol87"><td id="lol87"></td></form>
    <optgroup id="lol87"><tt id="lol87"><pre id="lol87"></pre></tt></optgroup>
    <optgroup id="lol87"><th id="lol87"><span id="lol87"></span></th></optgroup>
    1. 
      
      • <rt id="lol87"></rt>
        <span id="lol87"><del id="lol87"></del></span>
        回復(fù)

        s先生與p先生的謎題

        樓主: 89606 | 查看: 2208 | 回復(fù): 9

        頭像被屏蔽
        發(fā)表于 2019-5-25 15:17:25 | 發(fā)自安卓客戶端
        S先生與P先生的謎題,是由美國斯坦福大學(xué)的麥卡錫提出的,事實(shí)上這是一個(gè)推理問題。在對題目定義的清楚明確下,為了得到結(jié)果進(jìn)行了一系列的舉例證明與排除,從而在思辨中得出問題的答案。這個(gè)謎題從另一側(cè)面教會(huì)了我們思考問題的方法。
        美國斯坦福大學(xué)的麥卡錫提出的
        設(shè)有兩個(gè)自然數(shù)X、Y,2<=X<=Y<=99,S先生知道這兩個(gè)數(shù)的和S,P先生知道這兩個(gè)數(shù)的積P,他們二人進(jìn)行了如下對話:
        S:我確信你不知道這兩個(gè)數(shù)是什么,但我也不知道。
        P: 一聽你說這句話,我就知道這兩個(gè)數(shù)是什么了。
        S: 我也是,現(xiàn)在我也知道了。
        現(xiàn)在你能通過他們的會(huì)話推斷出這兩個(gè)數(shù)是什么嗎?(當(dāng)然,S和P先生都是非常聰明的)
        每一道題的解法都有它的獨(dú)特處。若具有良好的解題思想,思辨意識,有始有終,持之以恒,定會(huì)得到自己的滿意答案。
        解題方法一
        s先生自己不知道x,y
        說明和數(shù)s不是4,5,197,198
        否則x,y分別只能為2,2;2,3;98,99;99,99。均只有一種情況。即可確定x,y了。
        s先生知道p先生不知道x,y
        首先,什么樣的數(shù)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先生知道的 和數(shù)s 是如下的數(shù)
        SA={ 11,17,23,27,29,35,37,41,47,51,53...}
        SA也不可以是29,因?yàn)?9=7+11+11,則x,y=88,11,
        同樣得到SA={11,17,23,27}
        p先生聽了s先生的話后,知道了x,y
        我們可以想像p先生根據(jù)s先生的話,已經(jīng)知道s先生知道的和數(shù)是集合SA中的數(shù)
        若自己所知道的乘積p分解成m*n后 其中有一個(gè)(m+n)是集合SA中的數(shù)
        則 m,n就是所求的數(shù)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={18,24,28,30,50,52,....}
        所知道的x,y是乘積在pb中,且 乘積分解后的兩數(shù)的和只有一個(gè) 在SA中的數(shù)對,記為
        XY={(x1,y1),(x2,y2),.....}
        s先生也知道了x,y
        可以知道,這時(shí)s先生也知道p先生知道的數(shù)的范圍XY
        如果s分解后的兩數(shù)s=m+n,(m,n)只與XY中的一個(gè)數(shù)對相同
        這樣,s先生也就找到了x,y ,但是沒有這樣的數(shù)。
        解題方法二
        我看到過答案,這是根據(jù)我的理解寫下的
        S:我確信你不知道,但我也不知道
        為什么s先生這么確定?換句話說P先生得到怎樣的組合就能立刻知道m(xù)n的值呢?
        先看看哪些情況下p先生能立刻得到答案
        (1)mn不能同時(shí)為質(zhì)數(shù)。
        mn為質(zhì)數(shù),那么他們的乘積分解成兩個(gè)因子乘積的可能性就唯一了,那么P先生就會(huì)立刻得知mn的值。
        譬如34=1*34=2*17,因?yàn)閚m是大于等于2的,那么1*34這樣的組合是不可能的,那么mn就是2和17。
        Mn不為質(zhì)數(shù),那么他們可能之中有1個(gè)質(zhì)數(shù),或者2個(gè)同為合數(shù)。
        (2) 如果mn中有一個(gè)質(zhì)數(shù),那么那個(gè)質(zhì)數(shù)不會(huì)大于50
        如果mn有一個(gè)大于50,那么他們分解成兩個(gè)因子乘積的可能性中,其他的分解方式都會(huì)有一個(gè)因子會(huì)超過100,然么分解方式必然會(huì)被P排除,那就只剩下一種方式,P也就立刻知道答案。
        譬如318 = 6*53 = 3*106 = 2*159,因?yàn)閙n小于等于99,那么后兩種可能性肯定被排除。mn就肯定是6,53。
        (3) 如果mn都是合數(shù),那么都不會(huì)大于50
        理由同上。可就是P分解因子,只有一種情況下mn是小于100的,其他情況mn必有一數(shù)大于等于100。
        其實(shí)mn的積也不會(huì)是8或者27,因?yàn)? = 2*4 27=3*9,分解因子也就一種情況
        Mn的值在以上情況下P先生可以立刻知道答案,那么也就是說S先生看到mn的和可以立刻推理出mn不可能存在上述的情況
        (4)S不能分解成三個(gè)這樣的質(zhì)數(shù)之和:
        如果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肯定是奇數(shù)
        S肯定是奇數(shù),如果s是偶數(shù),那么mn有可能是質(zhì)數(shù)。(原作者引用了哥德巴赫猜想:每一個(gè)大于2的偶數(shù)都是兩個(gè)素?cái)?shù)的和。雖然這個(gè)猜想沒有證明,但是在100范圍以后可以實(shí)驗(yàn)證明這個(gè)猜想是正確的。如果有例外的話,這個(gè)猜想也就不會(huì)這么有名了。也就是說4-100范圍以內(nèi)的偶數(shù)都可以用兩個(gè)質(zhì)數(shù)的和表示。)
        (2)mn的和不能大于54
        這個(gè)推測的依據(jù)是建立在上面2、3之中的。因?yàn)镾先生確信P先生不知道m(xù)n的值,所以2、3的情況是不會(huì)從mn的和中反應(yīng)的。
        (3)S-減去2的值不是質(zhì)數(shù)
        在質(zhì)數(shù)中,2是一個(gè)特例,他是質(zhì)數(shù)中唯一的偶數(shù)。既然mn不能同時(shí)為質(zhì)數(shù),那么s減去2的值也就不是質(zhì)數(shù)了。
        (4)S不等于29,35,37,41,47,51,53.
        有上得S只能取11,17,23,27。
        P: 聽你說這句話,我就知道這兩個(gè)數(shù)了
        P先生和我們一樣,現(xiàn)在知道m(xù)n的和就只有上面的可能了。他只要把mn的積分解兩個(gè)因子乘積,所有可能性中,有且只有一組的可能性中兩個(gè)因子的和剛好是上面11個(gè)數(shù)中的一個(gè),那么P先生就知道m(xù)n的值了。
        假設(shè)P = 30 = 5*6 = 2*15,而5+6=11,2+15 =17,11和17都在上面11個(gè)數(shù)之中,那么P先生就無法判斷mn到底是哪組數(shù)。所以P就不會(huì)等于30。
        既然知道P先生的判斷方法,現(xiàn)在就從11個(gè)數(shù)出發(fā),一個(gè)個(gè)的推導(dǎo)。
        S: 我也是,現(xiàn)在我也知道了
        S先生根據(jù)P先生的話知道了mn的積分解因子,只有一組的因子之和為11個(gè)數(shù)中間的一個(gè)。而S先生同時(shí)也立刻知道m(xù)n的值。我們可以推斷,如果把mn之和拆成數(shù)個(gè)由一個(gè)奇數(shù)和一個(gè)偶數(shù)的組合,只有一個(gè)組合符合下面的條件:這個(gè)奇數(shù)和偶數(shù)的乘積符合第2條P先生的判斷,也就是把這個(gè)積分解成兩個(gè)因子乘積,所有分解情況中,有且只有一組的情況中兩個(gè)因子的和剛好是上面11個(gè)數(shù)中的一個(gè)。這樣S先生也就能知道m(xù)n的值了
        我們只要把11個(gè)數(shù)拆成若干種奇偶組合,如果有2個(gè)或者2個(gè)以上的組合滿足P先生判斷條件,那么這個(gè)數(shù)就不是mn的和。:
        (1)11 = 2+9=4+7=6+5=8+3
        2*9 = 18 = 3*6,3+6=9不在10個(gè)數(shù)中,那么2*9符合。
        4*7=28=2*14,前面說過mn是一奇一偶,2*14不考慮,4*7符合。
        6*5=30=2*15,而6+5=11,2+15=17,兩個(gè)數(shù)都在11個(gè)數(shù)中,那么P先生是無法判斷,所以這個(gè)組合可以略過。
        8*3 = 24 = 2*12=4*6,,那么2*12,4*6不用考慮,8*3符合
        現(xiàn)在有3組數(shù)字符合,那么11就不是mnd的和了
        從上面看,如果把11拆成2的次方和一個(gè)質(zhì)數(shù)的組合,那么只有一種分解是一奇一偶,其他的情況都是2個(gè)偶數(shù)。(4,7) = (2^2,7),(3,8) = (3,2^3),這樣的組合分解就具有唯一性,就能滿足我們的要求。11可以拆成2個(gè)這樣的組合,11就可以排除了。
        (2)23 = 2^2+19 = 2^4+7
        27 = 2^2+23 = 2^3+19
        上面是數(shù)可以拆成2組2的次方和一個(gè)質(zhì)數(shù),也就是有2組符合P先生的判斷,故這些數(shù)可以排除,那就只剩下17,29了
        (3)29 =16+13=2+27
        2*27 = 54 =3*18=6*9,符合
        16*13 是2^4和13,13是質(zhì)數(shù),肯定符合
        29有2組符合,所以29排除。
        (4)現(xiàn)在就只剩下17了。
        17=4+13=6+11=7+10=8+9
        4*13=52,6*11=66,7*10=70,8*9=72都只有一組符合。排除故無解。

        11

        16

        分享

        | 發(fā)表于 2019-5-26 01:53:56
        1. # -*- coding: utf8 -*-

        2. from collections import Counter as C

        3. res={(i,j)for i in range(2,100)for j in range(i,100)}
        4. print len(res)                # 4851

        5. def Sknows():
        6.         c=C(i+j for i,j in res)
        7.         return{(i,j)for i,j in res if c[i+j]==1},{(i,j)for(i,j)in res if c[i+j]>1}

        8. def Pknows():
        9.         c=C(i*j for i,j in res)
        10.         return{(i,j)for i,j in res if c[i*j]==1},{(i,j)for(i,j)in res if c[i*j]>1}

        11. def numCombWithP(x):
        12.         return len({(i,j)for i,j in res if i*j==x})

        13. # S不知道 & S知道P不知道
        14. aux={x for x in{i+j for i,j in res}if all(numCombWithP(u*v)>1 for u,v in res if u+v==x)}
        15. res&=Sknows()[1]&{(i,j)for i,j in res if i+j in aux}
        16. print len(res)                # 145

        17. # P知道
        18. res&=Pknows()[0]
        19. print len(res)                # 86

        20. # S知道
        21. res&=Sknows()[0]
        22. print len(res)                # 1

        23. print res                # {(4,13)}
        復(fù)制代碼
        | 發(fā)表于 2019-6-6 23:36:36 | 發(fā)自安卓客戶端
        看得我都好累,一臉懵逼,點(diǎn)個(gè)贊給你吧
        | 發(fā)表于 2019-6-9 13:12:45 | 發(fā)自安卓客戶端
        我跟你說這要是道題,你抄著抄著你就不知道答案抄到哪兒了。
        | 發(fā)表于 2019-6-9 14:03:12 | 發(fā)自安卓客戶端
        小落花啊
        尚未登錄
        您需要登錄后才可以回帖 登錄 | 加入學(xué)院

        <noscript id="lol87"></noscript>
      • <form id="lol87"><td id="lol87"></td></form>
        <optgroup id="lol87"><tt id="lol87"><pre id="lol87"></pre></tt></optgroup>
        <optgroup id="lol87"><th id="lol87"><span id="lol87"></span></th></optgroup>
        1. 
          
          • <rt id="lol87"></rt>
            <span id="lol87"><del id="lol87"></del></span>
            成人免费A片视频 | v与子敌伦刺激对白播放 | 三上悠亚ssni | 欧美成人午夜一区二区三区 | 俺去俺来也www色官网黑人 | 特黄一级毛片免费AAA | 成人网站在线免费观看 | 操B无码视频国产 | 99精品久久久 | 人妻加勒比在线无码精品 |