二进制真是好东西。。。。。
现有1000瓶葡萄酒,只知道其中有一瓶是毒酒,但不知道是哪瓶,喝一点点毒酒,就会致命。不想因此浪费这1000瓶酒。
故给出10只老鼠,10只杯,一次性找出那瓶酒。
Solution:
1、编号:
给葡萄酒标上数字:1-1000;给老鼠标上:0-9; 相应给杯标上:0-9; 每只老鼠配一只相同编号的杯子。
2、分酒:(根据2进制)
编号为1的葡萄酒分给编号为以下的杯子:0 (2^0 = 1)
编号为2的葡萄酒分给编号为以下的杯子:1 (2^1 = 2)
编号为3的葡萄酒分给编号为以下的杯子:1、0 (2^0 + 2^1 = 3)
。。。。
编号为1000的葡萄酒分给编号为以下的杯子:9、8、7、6、5、2、1、0(2^9 + 2^8 + 2^7 + 2^6 + 2^5 + 2^2 + 2^1 + 2^0 = 1000)
3、试酒:
让老鼠喝下相同编号的杯子。
4、找毒酒:
找出死掉的老鼠,记下其编号X、Y、Z……。
毒酒应该是编号为:2^X + 2^Y + 2^Z + ……