前面高人的答案已经很接近了,主要是需要添加了约定上面.
有这样两个两个假设 H1:黑=1,白=0;H2:黑=0,白=1.我发现:无论分析基于H1还是H2不影响最终结果的判断。
主要逻辑运算:异或非 1^1=1,0^0=1,0^1=0,1^0=0;即 同为1,不同为0。
记 e(n):偶数个n;o(n):奇数个n。
--------------------------------
假设100认定H1,99认定H2
100前面有99个人。所以100看到的只有两种情况 1 ,o(0)e(1) ;2,o(1)e(0)
以情况1o(0)e(1)为例,
在100看来
按照H1,o(0)e(1) 异或非得0,因此100会喊"白"(代表0)
又分两种情况
S1 99戴白帽 即为0 那么前98个人为e(0)e(1)
S2 99戴黑帽 即为1 那么前98个人为o(0)o(1)
而99的分析基于H2,在他看来(即把100的0认为1,把100的1认为0)
S1 前98个人为e(0)e(1) 异或非得 1.
S2 前98个人为o(0)o(1) 异或非得 0.
由于100喊的是"白",在H2中 白代表1.
可以推断
S1 99戴的是1 在H2中代表"白"
S2 99戴的是0 在H2中代表"黑"
和前相符
其他的情况如此类推
----------------------
而如果100和99一开始就认定同样的假设,必然得到正确的结果.
-----------------------
从98开始,他知道100喊的是前面99人所有的逻辑运算和,而99喊的是99自己的,而98又知道前面97个人的情况.那么他就惟独不知道自己的.一个简单的逻辑运算就可以解出自己的颜色.无论是基于H1还是H2.
**********************
结论:
其实问题最关键的地方是在99.而无论他选择什么假设,都可以根据100的结果,推断自己的颜色.而98...1只要根据前面后面的结果,容易地解出自己的颜色.
如果这题只有99个人就真的解不出了.因为99个人的话,H1还是H2就要影响结果了.


雷达卡

京公网安备 11010802022788号







