一、原题
一个教授逻辑学的教授,有三个学生,而且三个学生均非常聪明! 一天教授给他们出了一个题,教授在每个人脑门上贴了一张纸条并告诉他们,每个人的纸条上都写了一个正整数,且某两个数的和等于第三个!(每个人可以看见另两个数,但看不见自己的)
教授问第一个学生:你能猜出自己的数吗?回答:不能,问第二个,不能,第三个,不能,再问第一个,不能,第二个,不能,第三个:我猜出来了,是144!教授很满意的笑了。
请问您能猜出另外两个人的数吗?
二、解析
- 设定三个数值分别用A,B,C表示
- 每个人的纸条上都写了一个正整数。所以这三个数都是大于0的
- 某两个数的和等于第三个。 可判定对于C存在 A + B = C 或 A - B = C 之一
- 第一轮询问的结果可以得到如下关系
角色 | A得到的信息 | B得到的信息 | C得到的信息 |
---|---|---|---|
A回答时 | B ≠C | B ≠C | B ≠C |
B回答时 | B ≠C A≠C | B ≠C A≠C | B ≠C A≠C |
C回答时 | B ≠C A≠C A≠B | B ≠C A≠C A≠B | B ≠C A≠C A≠B |
- 第二轮询问的结果可以得到如下关系
角色 | A得到的信息 | B得到的信息 | C得到的信息 |
---|---|---|---|
A回答时 | B ≠2C B≠C/2 | B ≠2C B≠C/2 | B ≠2C B≠C/2 |
B回答时 | B ≠2C B≠C/2 A≠2C A≠C/2 A≠2B A≠B/2 | B ≠2C B≠C/2 A≠2C A≠C/2 A≠2B A≠B/2 | B ≠2C B≠C/2 A≠2C A≠C/2 A≠2B A≠B/2 |
C回答时 | – | – | 144 |
- 由以上条件可知必存在B ≠2C B≠C/2 A≠2C A≠C/2中的某一个使得C能够得到自己的144(即帮助C排除了一个错误答案,即存在某一个不等式对于C来说是“等式”)
当 A + B = C 被排除时,B = C/2 或 A = C/2 解得 A = B 不符合第一轮结果; B = 2C 或 A = 2C解得 负值。(所以C排除的一定是 A - B = C这种情况)
当 A - B = C 被排除时,B = C/2 解得 A = 3B ;B = 2C 解得 A = 3B/2; A = C/2 解得负值;A=2C解得B=C与第一轮结果不相符。
综上所述存在如下两个二元一次等式满足条件
1) A + B = 144 , A = 3B
2) A + B = 144, A = 3B/2
解得两种情况的结果
1)A: 108, B: 36
2)A : 86.4, B : 57.6 (与正整数不相符)
所以最终的答案就是 36,108
三、逆推
假设 A是36,B是108, C是144
- 对于A来说, 他心中对自己的预期值是 (36,108,144) 和 (252, 108,144)
- 对于B来说, 他心中对自己的预期值是 (36,108,144) 和(36,180,144)
- 对于C来说, 他心中对自己的预期值是 (36,108,114) 和 (36,108,72)
首先在没开始问的时候, 三个人知道的是什么!从上边的六组数里, 我们可以很明白的看到
A 知道 A ≠ B ≠ C, A ≠ 2B, A ≠ B/2,B ≠ 2C, B ≠ C/2, A ≠ 2C, A ≠ C/2
B 知道 A ≠ B ≠ C, A ≠ 2B, A ≠ B/2,B ≠ 2C, B ≠ C/2, A ≠ 2C, A ≠ C/2
C 知道 A ≠ B ≠ C, A ≠ 2B, A ≠ B/2,B ≠ 2C, B ≠ C/2, A ≠ 2C
所以教授的询问, 对于A和B来说是无意义的, 他们一开始就知道了所有的条件,但是仍然无法排除一个预期值。当两轮询问完成之后,A和B帮助了C补充了一个条件A ≠ C/2,于是C排除了自己的一个预期值,然后C答出了自己头上的数值。