✅1000瓶药水,1瓶有毒药,最少需要几只小白鼠一定能够找出?

典型回答

1000瓶药水,1瓶有毒药,服用后一小时毒发,毒药可以无限稀释,那么一小时内最少用几只小白鼠一定能够找出毒药?

这个是一道典型的考察程序员对二进制理解的题目,我们简化一下,假如现在我们有4瓶药水。把瓶子标上号,1、2、3、4。

然后把1、3混合在一起喂给老鼠A吃,把23混合在一起,喂给老鼠B吃,如果A挂了,那么就是1有毒;如果B挂了,那么就是2有毒,如果A、B都挂了,那就是3有毒。如果AB都没死,那就是4有毒。

为啥要把13混在一起,23混在一起呢?其实就是二进制,2只老鼠,可以有以下四种组合:

0 0 ——> 0

0 1 ——> 1

1 0 ——> 2

1 1 ——> 3

所以,你懂了吧。。。

所以,如果8瓶药水,那么就是需要3只老鼠即可,因为2^3 = 8,如果是 16瓶药水,就需要4只老鼠。

所以,1000瓶药水,就需要$ log 2 ^{1000} $那么计算出来的结果就是9-10之间,所以需要10只老鼠可以检测出来。

原文: https://www.yuque.com/hollis666/xkm7k3/misbg0cmmboz5zaf