|
Posted on 2005-11-16 18:24 非魚 閱讀(5924) 評論(40) 編輯 收藏 所屬分類: 雜七雜八
是ZZ的,題目大約是個唬頭,我覺得合格的程序員都應該可以算出來。
小明和小強都是張老師的學生,張老師的生日是M月N日,2人都知道張老師的生日是下列10組中的一天:
3月4日 3月5日 3月8日
6月4日 6月7日
9月1日 9月5日
12月1日 12月2日 12月8日
張老師把M值告訴了小明,把N值告訴了小強,張老師問他們知道他的生日是那一天嗎?
小明說:如果我不知道的話,小強肯定也不知道
小強說:本來我也不知道,但是現在我知道了
小明說:哦,那我也知道了
請根據以上對話推斷出張老師的生日是哪一天。
評論
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2005-11-22 09:10 by
該問題源于密碼學中的非對稱計算。
很多人都應該直到Diffie-Hellman協議,該協議用于對等雙方在不透露機密信息的情況下,協商密鑰
參看我以前的一篇隨筆 http://blog.csdn.net/huangzhq/archive/2005/05/23/378703.aspx
密碼學是非常有趣的一門科學,我將來會在BEA UserGroup上面講解,現在,我簡要描述上面的是如何計算出老師的生日。
當然,上述的題目從協議的角度算是脆弱的:)因為所有足夠聰明的人都能計算出來。
好,我們現在進入協議分析
消息1,小明---〉小強:
如果我不知道的話,小強肯定也不知道
消息2,小強---〉小明
本來我也不知道,但是現在我知道了
消息3,小明---〉小強
小明說:哦,那我也知道了
小明知道M,小強知道N,
為了交換M,N,且他們不想讓M,N在網絡上傳送以免旁邊的人都知道
所以,消息1反映了這樣一個事實,即小明已經通過M得知N不可能是2和7,因為這兩日是沒有重復的,
于是,M,N可能組合是
3,4 3,5 3,8
6,4
9,1 9,5
12,1 12,8
消息2反映了這樣一個事實,即在上面的組合中,小強能計算出M,因此,生日只能是6,4,其他都是雙解。
上面是一個Trick,不足以說明密碼學中的美妙,但體現了這樣一種思路,非對稱信息交換,它可是PKI的基礎:)
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2005-11-22 10:53 by
David, 這個問題應該多想想,和DH沒有關系,和Key Agreement沒有關系,和密碼學沒有關系。
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2005-11-22 14:50 by
如果M為6或12的話,小強有可能知道,而小明肯定不知道,M月可能為3月或9月。
由小強的話可知,N可能為1日、4日或8日.
小明第二句話可知,M月為9月,那N就為1了。
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2005-11-22 20:47 by
sorry, 我是搞反了,哈哈。
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2005-11-29 23:40 by
張老師把M值告訴了小明,把N值告訴了小強
3月4日 3月5日 3月8日
6月4日 6月7日
9月1日 9月5日
12月1日 12月2日 12月8日
小明說:如果我不知道的話,小強肯定也不知道
小明這么回答說明N有重復,因此n可能為4,5,1,8
小強說:本來我也不知道,但是現在我知道了
小強這么回答可推論出
第一點:除了老師生日這一天,另外給出的那一天假設M月D日中的D不可能有重復的數字因此D不可能為1,4,5,8,因此9約可排除
第二點:N在上面可選的月份中是唯一的,即1,4,5,8出現的機會只有一次,若M為3或12,小強根據它所掌握的信息不可能指導確切的日期,因此M月D日應為6月7日
所以老師的生日應該為6月4日
小明說的最后一句純屬廢話。
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2006-01-10 23:51 by
6月4日
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2006-01-10 23:52 by
6月4日 肯定不對?。?!你們再想想吧@
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2006-01-11 16:44 by
9.1
6.4不對 .只要想如果明拿了6 ,他不知道強是否拿的是7還是4,如果是7,強就可以一次確定! 所以明不能說我不知,強就不知!
所以要排除月份里有2,7的,即月只能是3,9!
當強知道月份只能是3,9 ,日期是1,4,8都可以唯一確定
但是明又說他也知道了,證明是1,因為只有他恰好是9是,9.1可以確定,如果是3月,他是不可能確定的
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2006-01-13 19:52 by
小明說:如果我不知道的話,小強肯定也不知道
月份中的所有日期在其他月份均出現>排除6,12月
小強說:本來我也不知道,但是現在我知道了
3,9月中唯一的日期>排除5日
小明說:哦,那我也知道了
所余日期中唯一的月份>9月1日
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2006-03-01 12:45 by
9.1是正解,兩位的推理非常嚴密阿!
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2006-03-03 15:45 by
我自己的見解吧,比較通俗的:
其實小明的第一句話的前半句"如果我不知道的話"是廢話,但又不是完全沒用,主要是用來迷惑吾等旁觀者的,害我頭暈了那么久,BS他!!.回過頭來,在已知條件中的4個月份都有兩個以上的日數,所以只知道月數的小明是肯定不知道的,所以他的第一句話其實是"小強肯定不知道",因為他是這樣想的,他看到條件中有兩個比較特別的日子: 6月7日 和12月2日,日數是唯一的.如果N是7或2的話,小強的肯定知道了.所以只要小強先開口說知道了,那肯定是這兩個其中一個,知道月份的小明自然也會知道是兩者中的哪一個.但小明不等小強先開口卻先一口咬定"小強肯定不知道".為什么他會這么肯定?我們分析一下,小強也不知道的情況只能是除6月7日 和12月2日外的日期了,因為都有重復的日數.小明怎么就這么確定不是這兩個日期呢?顯而易見,他知道的月數不是6和12.所以,小明無意中透露了第一句話的潛臺詞就是"M不是6或12",也就是M=3或M=9.
現在的條件就過濾為:
3月4日 3月5日 3月8日
9月1日 9月5日
5個日期了
小強聽了小明的話后,一開始有點驚訝小明怎么就這么確定我也不知道呢,仔細想想,很快用同樣的思路悟出小明的話中含義.根據現在已知條件,小強也得出了結論:"現在我知道了 ",但他為了要挫一下小明的銳氣,就在前面先來慢慢嘆半句"本來我也不知道".我們再來分析,他現在能知道的情況下只有日數沒有重復的日期符合條件,所以X月5日可以排除了,我們剩下可選擇的日期就只有:
3月4日 3月8日
9月1日
3個日期了
小明聽到小強確認"本來我也不知道"后心里微微一笑"大家都半斤八兩吧",但后半句就嚇了他一跳."我靠,不是吧,剛說你不知道,馬上就說知道了?搞什么東西嘛!".小明也不笨,他也馬上分析到小強知道的原因和得出上面的條件來.只有兩個不同的月份,知道月數的他當然也能很快的確定是哪日期了,不甘心落后的他馬上說"哦,那我也知道了".我們最后分析,雖然剩下的三個日期中只有兩個不同的月數,但3月的日數有兩個,而不知道日數的小明也能確定下來的,那就只有9月1日這個只有一個日數的了,所以,老師的生日就是9月1日!
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2006-03-06 20:45 by
9.1 沒錯
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2006-03-06 20:45 by
9.1 沒錯
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2006-03-17 01:34 by
密碼學,我覺得有點道理。
但是,如果小明和小強互相知道對方掌握著一個數字的話,而且這個數字無法直接得知老師的生日是幾月幾日(題目中顯然是這種假設)。那么小強得到的這個N顯然不是7和2(7和2是唯一的數字),推理可知小明得到數字肯定不是6(因為小明事先知道N不是7。如果小明自己得到的M是6的話,直接可以肯定是6月4日了。因為這樣的話,拿到M的小明就等于是小強直接拿到7或2一樣,直接得到答案了。)
3月4日 3月5日 3月8日
6月4日 6月7日
9月1日 9月5日
12月1日 12月2日 12月8日
小明說:如果我不知道的話,小強肯定也不知道
小強說:本來我也不知道,但是現在我知道了
小明說:哦,那我也知道了
請根據以上對話推斷出張老師的生日是哪一天。
如果小強得到的N不是4的話,得到M為3的小明才有可能永遠猜不出老師的生日N到底是哪一天(M如果不是3,小明就沒有道理講出第一句話來。小明猜對方手里是4,心想不是4的話,我就不知道是幾了,小強也猜不出我的月。于是有了第一句話,如果我不知道的話{不是4,我就不知道了,小強的5和8也同樣肯定不知道是幾月},小強肯定不知道{是4,小強有可能知道月是3,因為可以排除我拿到6,但是不是4,就肯定不知道了})。只有這樣,小明才可能講出第一句話來!!
語言來表達上述的觀點是很困難的,用思維來參悟并不難。
小強說:本來我也不知道,但是現在我知道了 是因為小強收了小明的啟發,想到了這一點(這一點指的是小明拿到的M肯定不是6,是6就等于自己拿到了7和2一樣。)所以拿到了N為4的小強一下子就從 3月4日 3月5日 3月8日
6月4日 6月7日
里得到到了3月4日這個答案。
所以才有了最后小明的這句話:哦,那我也知道了 小明聽了小強的話,堅定了自己的想法,就是小強的確拿到的N是4(如果不是4,小明和小強都不透露自己的數字,雙方永遠都無法確定老師的生日,因為N不是7或2是明顯的。M不是6是暗藏的,要推理的,這里小強是通過小明語言的暗示才推理到M不是6)。所以就從3月份中確定了是3月4日。
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2006-04-26 16:50 by
典型的博弈過程
1、首先排除6月的7和12月的2,因為這兩天是唯一的,只需要知道日就可以確定生日。
2、博弈過程:小明是知道月的,但是他想借助小強來排除不確定的日,所以他試探性的問"如果我不知道,小強肯定不知道",小明前提回答N有重復,因此n可能為4、1、5、8,他想借助小強排除重復的日。M則不定
3、結果小明回應他"本來不知道,現在卻知道了”,小明如果知道月,小強知道的日,小強借助小明的詢問確定了小名想借助小強的回答確定是6月4日或者7日,結果小強的回答幫助小明排除了6月7日,只有這樣,小明才能確定日是4,小明在前提設立了一個假設條件,即:“如果我不知道,小強肯定不知道”,說明了小明的意思就是想讓小強排除6月7日,小強則揣摩了小明的意思,說出本來我不知道,現在卻知道了,即6月4日。其他都是雙解
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2006-06-02 10:16 by
這種題出給小學生還真不錯!
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2006-07-13 13:59 by
我不知道什么密碼學也不知道什么是對稱學,我只知道結果是6月4日。因為從小明的那話可以得出結論,只有6月4日是剩余答案,其他都有2個結果。SO簡單的問題嘛
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2006-07-14 09:43 by
霖雨的分析是對的,而且很詳細:)
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2006-10-05 23:09 by
的確,霖雨分析的很嚴密。而且也是正確的。高手啊?。∨宸?!
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2006-10-18 11:27 by
是9.1
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2007-08-15 22:28 by
9.1
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2007-08-15 22:39 by
排除法:
小明說:如果我不知道的話,小強肯定也不知道--說明已經不是6月和12月
小強說:本來我也不知道,但是現在我知道了 --已經不是5了,如果是5的 話他自己也不知道是3月還是9月
小明說:哦,那我也知道了--說明已經是9月了,如果是3月的話,就不知道 ?。吃拢慈者€是3月8日.
所以推出的答案是9月1日.
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2007-08-15 22:48 by
排除法:
小明說:如果我不知道的話,小強肯定也不知道--如果小強是2和7的話,小強肯定知道了,說明已經不是6月和12月了.
小強說:本來我也不知道,但是現在我知道了 --已經不是5了,如果是5的話他自己也不知道是3月5日還是9月5日.
小明說:哦,那我也知道了--說明已經是9月了,如果是3月的話,就不知道3月4日還是3月8日.
所以推出的答案是9月1日.
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2007-08-28 06:18 by
@地方 錯了,不是。
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2007-09-17 16:10 by
同傳租賃 同聲傳譯翻譯公司 同聲傳譯設備租賃 同聲傳譯 同傳租賃 同聲傳譯 同聲傳譯設備租賃 同傳租賃 北京同傳設備租賃 上海同聲傳譯設備租賃 同聲傳譯 同聲翻譯公司
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2007-11-10 17:50 by
我想是:6月4號
這樣看
月份 日期
3 4 5 8
6 4 7
9 1 5
12 1 2 8
我們現在就說小明知道的是:6月
首先,從上面的日期得知6月7和12月2日,的日期那個數是唯一的,這兩個日期包含了6月
第一個
小明說:如果我不知道的話,小強肯定也不知道 .
他要問小強是不是這兩個(6月7和12月2日),就是要告訴他,他有6或12
小強說:本來我也不知道,但是現在我知道了
"本來我也不知道",回答了他不是上面那兩個,(6月7和12月2日)
"但是現在我知道了"回答他本來是在兩個數字中猶豫(因為4字日期的有,3月4號和6月4號),
他說他現在知道了那就是說是6月4號了,
所以小明說:哦,那我也知道了
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2007-12-13 21:29 by
如果我猜肯定猜9.1
非常有建設性的答案...為什么?不知道...應試教育...
re:看了上面的分析,感覺是9.1把
分歧點是第一句話:小m肯定小q不知道..
1.不是2,7號
2.不是6,12月份
你覺得呢?
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2007-12-13 21:33 by
其實是語文的問題...咬文嚼字..咬文嚼字..
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2007-12-14 20:40 by
不想多說,根本都不嚴謹。
==小明是怎么知道不是3月的那兩天哪?
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2008-01-11 09:32 by
都是高智力者,什么答案都用書本上的知識來推理,那這就很容易多了。
可結果就那么容易嗎?
我的答案是:6月7日
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2008-03-12 23:20 by
3月4日 3月5日 3月8日
6月4日 6月7日
9月1日 9月5日
12月1日 12月2日 12月8日
M=月 N=日
M=3,6,9,12
N≠1,2,4,5,7,8,10,11
所以以上得出
9月1日 是沒有數字重疊和沖突的~
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2008-05-19 16:40 by
91
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2008-06-24 20:33 by
不會是6月7日或12月2日,因為7日和2日是十組中的唯一。從而小明的第一句話否定了兩個組,6月組和12月組,而只可能是3月或9月,小強在否定了兩個月組就能直接得到答案,是因為他得到的是一個1、4或8,但只有1能滿足小明能因此得到答案。9月1日,正解!
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2008-07-18 15:10 by
不同人看問題,角度不一樣,思維不盡相同。 有密碼學,博弈論,推理學,情理思考,換位思考,案件重演等等。
兩個最具爭議答案,9月1與6月4
如果兩人有人玩陰的,那就是6月4
如果兩人都比較直白,那就是9月1
而如果是中國應試教育,答案當選9月1 而如果是在美國出的思考題,答案不唯一,其中6月4跟9月1都是正確的答案。
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2009-03-19 17:55 by
那么為什么要給出最后一句話呢?
這道題如果沒有最后一句話的話,那么將有兩個答案,6.4和3.4.
但是,有了最后一句話的話,那么小明透露出的信息就是他之前不知道
有了這句不出,答案就只有3月4日了
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2009-06-10 12:40 by
你的說法不對
你說最后剩下3/4 3/8 9/1 應為3月有兩組 所以是9/1,,
可是3/4很早就被排除了
一開始就知道6/7 不可能 而小明不知道答案 所以不可能是6月 那么4號也就不可能 接著3/4 也被排除
最后剩下的是9/1 和3/8 這兩個選一個 我還不確定
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2010-07-15 06:49 by
9月1
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2010-08-06 16:42 by
應該是6月7號,這樣,小強分析如果是三月份的話,三月份的日期4號5號8號,在每個月份上都有,所以小明根本不可能肯定,那么,三月份跟4號5號8號可以排除
# re: 月薪3萬的一道面試題------看看你的IQ 回復 更多評論
2011-09-23 15:26 by
撒旦發生大幅是否
# re: 月薪3萬的一道面試題------看看你的IQ [未登錄] 回復 更多評論
2012-09-27 17:04 by
9月1號
|