留下997个人的方法,自己想出来的
对最后一个人来说只有两个未知数。报出剩下两个数字的平均数,向上取整(向下也可以)。
对前一个人来说,未知的数字有三个,他们的平均数字都不一样(先分析不存在取整误差的情况)。
根据听到的平均数,可以确认自己的号码并报出。
对于下一个人来说,排除上一个人报的数字后,未知数始终只剩下3个,用同样的方法排除,如此反复。
按此方法进行到底能留下1000人,但由于取整时带来的数据丢失,某两人会比较尴尬,比如未知数是10和29,平均取整是20,这对后脑贴着11或30的人来说不好判断。
为了尽可能传递正确的信息,这种情况发生时,规定报小的数字,如10、11、30,就报小10。
这里分为几种情况:
1、未知数是两个偶数,举例4、8
3号报了3,7号报了8。错1个人。
7号先报会报7,3号会报4。错1个人。
2、未知数是两个奇数,举例7、11
6号报了6,12号报11。错1个人。
10号报了10,8号会报7。错1个人。
3、未知数是小的是奇数,大的是偶数。举例101、110
102号报了101,109号报109。错1个人。
111号报了110,100号会报100,错1个人。
4、未知数是小的是偶数,大的是奇数。举例900、921
901号报了900,922号报921。错1个人。
922号报了921,900号会报900,错1个人。
也就是说统一往小里报能保证纠结的两人对一个错一个,对其他人则不再产生影响。
如果平均数统一取小,那么遇到纠结的情况应该统一往大里报,否则错报的数字可能让一些本不该纠结的人陷入纠结(未验证,想想觉得应该会这样)。
那么这样保证999个人了?还不对
第一个人报的平均数会占用一个人的数字,轮到那个人了怎么办?为了正确传递信息,那就规定遇到这种情况就报第一个人的号码。信息传递成功,第一个人也英雄了,留下997人。
这里阐述的都是一般情况,能想到的特殊情况都是增加留下人数的。