二进制的 11111111111(11个1) 是2047
将每个瓶子编号1,2,3...2012.
编号转为二进制00000000001,00000000010,00000000011,。。。。。
将所有倒数一位为1的瓶子的液体取一点混合放在一个瓶子里。
将所有倒数第二位为1的瓶子的液体取一点混合放在第二个瓶子里。
2012转换为二进制只有11位。所以只要11个瓶子。
将倒数第11位为1的瓶子的液体取一点混合放在第11个瓶子里。
11只老鼠一次性分别喝下11个瓶子的混合液体。
假设喝了第一个瓶子的老鼠死掉了,说明有毒液体瓶子的编号的倒数第一位为1.
第二个没死掉,那么有毒瓶子倒数第二位为0.
以此类推。
11只老鼠是死是活的状态组成了有毒瓶子的编号。
转载自c++吧
将每个瓶子编号1,2,3...2012.
编号转为二进制00000000001,00000000010,00000000011,。。。。。
将所有倒数一位为1的瓶子的液体取一点混合放在一个瓶子里。
将所有倒数第二位为1的瓶子的液体取一点混合放在第二个瓶子里。
2012转换为二进制只有11位。所以只要11个瓶子。
将倒数第11位为1的瓶子的液体取一点混合放在第11个瓶子里。
11只老鼠一次性分别喝下11个瓶子的混合液体。
假设喝了第一个瓶子的老鼠死掉了,说明有毒液体瓶子的编号的倒数第一位为1.
第二个没死掉,那么有毒瓶子倒数第二位为0.
以此类推。
11只老鼠是死是活的状态组成了有毒瓶子的编号。
转载自c++吧