题目:有1000瓶水,其中有一瓶有毒,小白鼠只要尝一点带毒的水24小时后就会死亡,至少要多少只小白鼠才能在24小时时鉴别出那瓶水有毒。
回答:
用二进制算法。
把1000瓶水编号,每个编号写成二进制的形式,pow(2,10) = 1024 > 1000,这样每个编号就有10位。
把10只小白鼠编号,从1到10,让第N号小白鼠去喝瓶子编号第N为为1的水,
新定义一个十位二进制数,最终死掉的小白鼠的编号的位全部为1.
比如 1,3,5,7,8号小白鼠死掉了,那有毒的瓶子的二进制编号就是 1010101100