超难面试题:甲乙两人互猜数字(数理逻辑)_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 超难面试题:甲乙两人互猜数字(数理逻辑)

超难面试题:甲乙两人互猜数字(数理逻辑)

 2013/9/20 10:08:31  Devymex  博客园  我要评论(0)
  • 摘要:这是一道历史悠久,又很困难的面试题。你在旁观主持人和甲、乙两个天才数学家玩猜数字游戏。主持人准备了两个数,告知甲乙:这两个数不同,且大于等于1,小于等于50。然后主持人将两数之积告诉甲,把两数之和告诉乙。甲知道乙拿到两数之和,乙也知道甲拿到两数之积。主持人让甲乙猜这两个数字,让甲先发言。甲:“我不知道这两个数是什么”乙:“我也不知道”甲:“那我知道了”乙:“那我也知道了”请问你,这两个数是什么
  • 标签:面试 猜数字 面试题

这是一道历史悠久,又很困难的面试题。

你在旁观主持人和甲、乙两个天才数学家玩猜数字游戏。主持人准备了两个数,告知甲乙:这两个数不同,且大于等于1,小于等于50。然后主持人将两数之积告诉甲,把两数之和告诉乙。甲知道乙拿到两数之和,乙也知道甲拿到两数之积。主持人让甲乙猜这两个数字,让甲先发言。

甲:“我不知道这两个数是什么”

乙:“我也不知道”

甲:“那我知道了”

乙:“那我也知道了”

请问你,这两个数是什么?

网上有不少对这道题的讨论和答案,都没有准确详细的推理。本文将以严谨而详细的描述给出推理过程,但建议在参阅下面的答案前,先自行认真思考。

 

 

 

 

 

 

 

下面给出分析与答案

由于推断的逻辑很复杂,所以必须用约定的语言来描述。本文所用的推断名称格式如下:

“1甲n”表示若甲拿到的两数之积为n,第1次发言时做的推断。

“1乙m”表示若乙拿到的两数之和为m,根据甲的第1次发言,乙做出的推断。

“2甲n”表示若甲拿到的两数之积为n,根据乙的第1次发言,甲做出的推断。

“2乙m”表示若乙拿到的两数之和为m,根据甲的第2次发言,乙做出的推断。

前提是甲乙都是天才数学家,因此一定会先假设两个数,然后将自己做为对方进行推断。如果可以推断出,则一定不会失误。

 

推断的书写格式为:

推断名:可能拆分1,结论1;可能拆分2,结论2;……

推断名为红色表示可知推断,即可推断出确切的两个数;绿色表示未知推断,即有多种可能。

 

一、甲说:“我不知道”

下面列出甲拿到的积为2到21的全部情况。若两数之积只有一种拆分可能,则甲可做出可知推断,与甲第一次未知的事实不符。若至少有两种可能,则甲做出未知推断。

1甲2:1*2,可知1和2。

1甲3:1*3,可知1和3。

1甲4:1*4,可知1和4。

1甲5:1*5,可知1和5。

1甲6:1*6,2*3。

1甲7:1*7,可知1和7。

1甲8:1*8,2*4。

1甲9:1*9,可知1和9。

1甲10:1*10,2*5。

1甲11:1*11,可知1和11。

1甲12:1*12,2*6,3*4。

以下略,易证得两数之积为素数或素数的平方时为已知推断,否则为未知推断。

 

二、乙说:“我也不知道”

1. 对于乙,若两数之和只有一种拆分可能,则乙可做出可知推断,与乙第一次未知的事实不符。

2. 若至少有两种拆分可能,则乙可在假设某一种拆分的情况下,算得两数之积,然后假设自己为甲做出推断,并得到相应的结论:若在假设的某一种拆分的情况下甲会做出已知推断,则该情况与甲第一次未知的事实矛盾;若有且只有一种拆分的情况下甲会做出未知推断,则乙可做出已知推断(就是这种拆分),与乙第一次未知的事实矛盾;若有至少两种拆分的情况下甲都会做出未知推断,则乙做出未知推断,符合乙第一次未知的事实。

1乙3:1+2,可知1和2。

1乙4:1+3,可知1和3。

1乙5:1+4,则1甲4;2+3,则1甲6

1乙6:1+5,则1甲5;2+4,则1甲8

1乙7:1+6,则1甲6;2+5,则1甲10;3+4,则1甲12

1乙8:1+7,则1甲7;2+6,则1甲12;3+5,则1甲15

1乙9:1+8,则1甲8;2+7,则1甲14;3+6,则1甲18

1乙10:1+9,则1甲9;2+8,则1甲16;3+7,则1甲21;4+6,则1甲24

以下略,易证得皆为未知推断。

 

三、甲说:“那我知道了”

对于甲,在排除第一次的已知推断后,在剩下的推断中两数之积必有两个或以上的拆分可能。那么甲可在假设某一种拆分的情况下,算得两数之和,然后假设自己为乙做出推断,并得到相应的结论:若假设的某一种拆分情况下乙会做出已知推断,则该情况与乙第一次未知的事实矛盾;若至少有两种拆分的情况下乙都会做出未知推断,则甲只能做出未知推断,与甲第二次已知的事实矛盾;若有且仅有一种拆分的情况下乙会做出未知推断,则甲可做出已知推断,符合甲第二次已知的事实。

2甲6:1*6,则1乙7;2*3,则1乙5

2甲8:1*8,则1乙9;2*4,则1乙6

2甲10:1*10,则1乙11;2*5,则1乙7

2甲12:1*12,则1乙12; 2*6,则1乙8;3*4,则1乙7

以下略,易证得皆为未知推断。

 

四、乙说:“那我也知道了”

对于乙,在排除上次的已知推断后,在剩下的推断中两数之和必有两个或以上的拆分可能。那么乙可在假设某一种拆分的情况下,算得两数之积,然后假设自己为甲做出推断,并得到相应的结论。若假设的某一种拆分情况甲会在第二次做出未知推断,则该情况与甲第二次已知的事实矛盾;若有且仅有一种拆分的情况下甲会在第二次做出已知推断,则符合甲第二次已知的事实。

2乙7:1+6,则2甲6;2+5,则2甲10;3+4,则2甲12

2乙8:1+7,则2甲7;2+6,则2甲12;3+5,则2甲15

2乙9:1+8,则2甲8;2+7,则2甲15;3+6,则2甲18;4+5,则2甲20

2乙10:1+9,则2甲9;2+8,则2甲16;3+7,则2甲21;4+6,则2甲24

黄色标注的情况早在第一次推断就被排除,不予考虑。以下略,易证皆为未知推断。

 

结论:当两数为1和6时或1和8时,甲乙各自的两次推断结论均满足题目所描述的事实。最后留一个练习:如果两个数可以相同,那这道题是否有唯一解?如果有,解是什么?

发表评论
用户名: 匿名