题目
帽子
一群人开舞会,每人头上都戴着1顶帽子。帽子只有黑白两种颜色,其中黑的至少有1顶。每个人都能看到其他人的帽子,但是看不到自己的。主持人先让大家看看别人戴的帽子,然后关灯,如果有人认为自己戴的是黑帽子就拍一下手。第一次关灯没有声音,于是再开灯,让大家再看一遍,然后关灯,这次依然没有声音,然后又一次开灯,直到第三次关灯出现了拍手声音,问有几个人戴着黑色的帽子?(假设所有人都有足够的推理能力)
几个人
一场聚会中有100个人参加,其中有一部分人只说真话,剩下的只说假话。现在你向每个提问:“这个聚会中有几个只说假话的人?”。第1个人回答1,第2个人回答2,……,第100个人回答100。只说真话和只说假话的人各有多少?
握手
一场聚会中有100个人参加,其中有一部分人只说真话,剩下的只说假话。一部分人相互握了手。现在你向每个人提问:“你和多少说真话的人握了手?”。第1个人回答0,第2个人回答1,……,第100个人回答99。只说真话和只说假话的人各有多少?
解答
帽子
这道题能这样出,说明只有黑帽子的数量在某个特定的值时才会导致第三次关灯出现拍手声音。我们可以尝试对黑帽子数量进行假设:
- 假设只有1个黑帽子,因为题目中提到“黑的至少有1顶”,那么这个人在看到其他人都是白帽子时就知道自己是黑帽子了,那么他在第一次关灯时就会拍手。
- 假设有2个黑帽子,这两个人都看见除自己以外的人中有一顶黑帽子,但无法确定自己帽子的颜色。第一次关灯没人拍手。开灯后,他们根据上一步的推理知道,黑帽子数量多余1个,而除自己以外只看到1个黑帽子,说明自己戴着黑帽子,那么这两人在第二次关灯时会拍手。
- 继续类似的推理可知,有n个黑帽子时,这几个人会在第n次关灯拍手。
故答案为3顶黑帽子。
几个人
显然,所有只说真话的人的回答应该是一致的,而题目中每个人的回答都不同,说明只说真话的人不超过1个。
尝试假设没有只说真话的人,即100个人全是只说假话的人,那么回答100的那个人说了真话,与假设矛盾。
所以有1个只说真话的人,99个只说假话的人。
握手
要注意到这道题并不是每两个人之间都握手了,这是和上一题最大的不同。
我们尝试从不同角度入手解这道题。
(一)
假设没有只说真话的人,那么所有人都不可能和只说真话的人握过手,所以第一个人说的真话,矛盾。
假设有1个只说真话的人,显然这个人是第一个人,我们可以构建出一种可能的情况:第一个人没有和任何一个人握过手,于是其他人说的都是假话,符合题目条件。
假设有2个只说真话的人,显然这两个人的回答应该是一样的,这和题目条件矛盾。
继续讨论下去,发现在只说真话的人群中,至少会有两个人握手次数相同,他们的回答应该是一样的。所以和题目条件矛盾。
关于“一些人相互握手,一定会有至少两个人握手次数相同”的证明:设总人数为n。于是每个人的握手次数只可能是0至n-1中的某个数,一共n种情况。然而握手0次和握手n-1次的人不可能同时出现,所以这n个人中每人的握手次数只有n-1个可能情况。根据鸽笼原理,必然有两个人握手次数相同。
经过上述讨论,排除掉不可能的情况,剩下的唯一的有可能的情况就是答案:有1个说真话的人,99个说假话的人。
(二)
先看第100个人,如果他说的是真话,这意味着第100个人和其他所有人都握手了,并且其他的人也都是只说真话的人。而第一个人说握手0次,这显然相互矛盾。所以第100个人说的假话。
再看第99个人,如果他说的是真话,由于已经知道第100个人说的假话,我们推出第99个人和第1个至98个人都握手了,并且第1个至98个人也都是只说真话的人。同上,和第一个人说的矛盾。
以此类推,第2个至第100个人说的都是假话。
对于第一个人,显然他说的是真话。所以最终答案是有1个说真话的人,99个说假话的人。