题目

1000个一模一样的瓶子,其中有999瓶是普通的水,有1瓶是毒药。任何喝下毒药的生命都会在一星期之后死亡。现在你只有10只小白鼠和1个星期的时间,如何检验出哪个瓶子有毒药?

解题思路:二进制

1000瓶,1. 毒药问题 - 图1, 也就是说,1000瓶药品可以使用10位二进制数就可以表示。

  • 1 瓶 : 00 0000 0001
  • 2 瓶 : 00 0000 0010
  • 3 瓶 : 00 0000 0011
  • ……
  • 999 瓶:11 1111 0010
  • 1000 瓶:11 1111 0011


需要10只老鼠,给老师按顺序编号:ABCDEFGHIJ 分别代表从低位到高位每一个位。 每只老鼠对应一个二进制位,如果该位上的数字为 1,则给老鼠喝瓶里的药。

观察,若死亡的老鼠编号为:ACFGJ,一共死去五只老鼠,则对应的编号为 10 0110 0101, 则有毒的药品为该编号的药品,转为十进制数为:613号。