【笔试题】有1000瓶药水,但其中有一瓶毒药水,需要多少只小白鼠?

【笔试题】有1000瓶药水,但其中有一瓶毒药水,需要多少只小白鼠?


  【笔试题】有1000瓶药水,但其中有一瓶毒药水,需要多少只小白鼠?

  【笔试题】快速分沙堆,辨别出十堆沙子中哪堆沙子溶解会变色?

  【笔试题】快速测出假硬币



1、 题目描述

  现有1000瓶药水其中有一瓶是毒药水,现需要提供多少只小白鼠才能检测那一瓶毒药水?(使用尽可能少的实验小白鼠)


2、 分析思路

  因为2^10=1024,故提供10只小白鼠就可以检测出那一瓶毒药水。
  首先对1000瓶药水进行编号1~1000,10只小白鼠进行标记1至10号,对10只小白鼠分别灌入药水,1号药水灌给一号小白鼠,2号药水灌给二号小白鼠,3号药水灌给一、二号小白鼠,4号药水灌给三号小白鼠……以此类推。
  也就是说,把1000瓶药水转换成二进制,对应的二进制位为1表示该药水给这只小白鼠喝为0表示该药水不给这只小白鼠喝。根据小白鼠的存活状态,转换成十进制来判断具体是哪瓶药水是毒药水。

瓶子 二进制编码 小白鼠
1 00 0000 0001 1
2 00 0000 0010 2
3 00 0000 0011 1、2
4 00 0000 0100 3
5 00 0000 0101 1、3
500 01 1111 0100 3、5、6、7、8、9
501 01 1111 0101 1、3、5、6、7、8、9
999 11 1110 0111 1、2、3、6、7、8、9、10
1000 11 1110 1000 4、6、7、8、9、10

  通过观察一至十号小白鼠哪只或者哪几只死亡就可以知道是哪瓶是毒药水了。假设1、2号小白鼠死亡,则代表3号瓶的药水是毒药水;假设1、3、5、6、7、8、9号小白鼠都死亡了,则说明编号为501的药水 是毒药水。


3、开拓思维

  已知有m瓶药水,那么需要 x x x 只小白鼠就可以检测出那一瓶毒药水。只需满足条件: 2 x ≥ m 2^x\geq m 2xm


Alt

                                     发散思维,注重积累!

猜你喜欢

转载自blog.csdn.net/Sunnyside_/article/details/115022684