猜数字

来源:互联网 发布:淘宝标题优化流量暴增 编辑:程序博客网 时间:2024/05/08 21:07

题目描述:

一个教授逻辑学的教授,有三个学生,而且三个学生均非常聪明! 一天教授给他们出了一个题,教授在每个人脑门上贴了一张纸条并告诉他们,每个人的纸条上都写了一个正整数,且某两个数的和等于第三个!(每个人可以看见另两个数,但看不见自己的) 教授问第一个学生:你能猜出自己的数吗?回答:不能,问第二个,不能,第三个,不能,再问第一个,不能,第二个,不能,第三个:我猜出来了,是144!教授很满意的笑了。请问您能猜出另外两个人的数吗?

题解:

一、注意到教授给出的数都是正整数,所以设学生A,B,C的各自持有的数字是a,b,c,即

条件1、a>0,b>0,c>0

二、第一轮三个人都不能确定自己持有的数字,可以得出以下结论:

条件2、每个数都是两两不等的。(反证:因为如果相等那么肯定有一个人能够看到对面2个学生相等的数从而第一轮就猜出自己的数字)

三、第二轮前两个人还是不能确定自己持有的数字,可以得出如下结论:

条件3、任何一数不是另一个数的两倍(引申条件2 或 条件2的推论和根据第二轮前两个人没答上来的现象,例如 a=48,b=96,c=144,c在看到96和48时,自己只可能是 144或者是48,但 是如果自己是48,那么B同学早在第一轮就猜出A、C都是48,从而知道B自己是96,但是B并没有在第一轮知道自己是什么。所以这个时候C能肯定自己不是48,那就只能是144了,这样第一轮C就已经知道自己是144了,这与现实矛盾。所以任意一个数不能是其他数的两倍)

四、综合条件1、2、3. C学生的数字c=a+b 或 c=a-b;

分类讨论:

1、假设c=a-b,那么c=a+b就是被否定的,矛盾的(不然C不可能确定地告诉教授自己知道数字,那么可以推论:C知道自己是什么数 一定是C排除了c=a+b和c=a-b中的一种可能而得出肯定的结论的),这样我们来利用三个条件使c=a+b变得矛盾起来,条件1,2 基本上c=a+b是满足的,那么我们令a+b=2b,即c=2b,推出a=b,与条件2矛盾,即:要使c=a+b矛盾那么就得是a=b,这却与条件2矛盾,所以c=a+b不能被否定,所以第一种假设不能成立,C同学不能肯定地知道答案。
2、由于假设1是不成立的,那么必定是c=a+b是成立的,即C同学确定c=a-b是否定的,矛盾的,那么我们依然让c=a-b矛盾,即a-b=2b。又a+b=144;联立求解 得a=108;b=36。
综上a、b、c最后的数字为108、36、144 或者是 36、108、144。现在我们来在知道a=36(或108)、b=108(或36)、c=144的情况下 正向推导一下情况的发展:A的第一轮:A看到 B是108,C是144,这时他得出自己可能是36或者是252。B的第一轮:B看到A是36,C是144,这时他猜自己可能是108或者是180。C的第一轮:C看到A是36,B是108,这时他猜自己是72或者是144。A的第二轮:这时他分析 如果自己是36说的通,而如果自己是252还是说的通所以他还是不能确定自己是什么数。B的第二轮:这时他分析如果自己是108说的通,如果自己是180还是说的通所以他也不能确定自己到底是什呢数。C的第二轮:这时他知道A,B还是不能确定然后C分析自己如果自己是72,那么他很快会注意到自己是A(36)的两倍,然后他站在B的角度去审视这个情况,B看到了36和72,B肯定会猜自己是36或者是108,但是第一轮过后A,B,C三人都不能确定,说明B肯定自己不是36(因为如果这样C在第一轮就看到两个36,马上C就猜出自己是72了),所以第一轮结束的时候B能肯定自己是108了,这样第二轮B肯定会说自己是108;但现实情况是B在第二轮没有说这是得出条件3的关键,这时A从B的角度回到自己的角度上来,他知道B在第二轮没有说出来,那么自己肯定不是72了,只有144这种可能了,此时激动万分的C在第二轮说出了自己的数字:144!整个推理过程其实就是假设,然后在假设的分支站在别人的角度继续假设分析,这样可以构成一个假设分析树,当在某个节点推出矛盾时就回溯,只有整棵树只有一个最深层叶子时才是唯一确定的正确方案。
0 0