zoukankan      html  css  js  c++  java
  • 1000瓶药水,1瓶有毒药,几只小白鼠能够找出毒药

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

      假如是8瓶药水,3只小白鼠。

      000=0
      001=1
      010=2
      011=3
      100=4
      101=5
      110=6
      111=7

      每位数表示一只老鼠,0-7表示8个瓶子。即将1,3,5,7号瓶子的药混合取样给鼠1吃,2,3,6,7号瓶子混合取样给老鼠2吃……死鼠相应的位标为1。如鼠1死了,鼠2没死,鼠3死了,那么就是101=5号瓶子有毒。N只老鼠的量程为2^N,1000只瓶子位于2^9 ~ 2^10,即10只小鼠可以测1000瓶水。

    第二种变体:服用后一小时毒发,那么两小时内用几只小白鼠能够找出毒药?

      两个小时就可以测试两轮,且第一轮死了的小白鼠不能参与第二轮,可以用3进制

      0表示两轮都不喝

      1表示第一轮喝,第二轮不喝

      2表示第一轮不喝,第二轮喝

      00=0

      01=1

      02=2

      10=3

      11=4

      12=5

      20=6

      21=7

      如果鼠1第二轮死,鼠二第一轮死,就是12=5

      最后推出公式为(测试次数+1)^x >= 药水瓶数     x为白鼠数量   求x的最小整数值

    第三种变体:有16瓶水1瓶有毒,用多少只小白鼠能测出14瓶无毒的水?

      将16瓶药水用二进制XXXX表示,取3只小白鼠来测,测出的状态为XXX,那么毒在XXX0或XXX1中,剩下14瓶无毒。

  • 相关阅读:
    GenericServlet vs HttpServlet
    il c井
    额。。万恶之源就是c
    js算数优先级
    connect-flash 中间件
    触发bfd 的条件
    module 和 module.exports 的区别
    a标签填充父容器
    bootstrap
    每日一练排版
  • 原文地址:https://www.cnblogs.com/mengchunchen/p/9870789.html
Copyright © 2011-2022 走看看