题目:
100个人,每人头上戴一顶帽子,写有0..99的一个数,数可能重复,每个人都只能看到除自己以外其他人的帽子。每个人需要说出自己的帽子的数,一个人说对就算赢。
解答:
如果大家不商量随便猜的话,获胜的概率为1-(99/100)^100,但如果大家商量一下的话,则有必胜的策略。
问题可以利用同余来解决。100个人提前商量一下,每个人做一个编号,0-99。
既然每个人可以看到其他人帽子上的数,以编号为 i 的用户为例,把其他人的数加在一起,mod 100,设结果为k,那么他猜自己帽子上的数为i - k。如果k > i,则猜自己的帽子上的数为i - k + 100。
简单证明一下:可以知道所有帽子编号的加和mod 100的结果只可能是0 - 99。如果100个人猜100个不同的加和,一定有一个人可以猜对。