• 有一千瓶水,其中有一瓶是有毒的,老鼠喝了毒的水会在七天后死亡,请问需要几只老鼠才能找出有毒的那瓶水?


    思路:

    使用二进制的格式来给每瓶水做标记,

    第一瓶水:0000000001
    第二瓶水:0000000010
    第三瓶水:0000000011
    .
    .
    .
    第1000瓶水:1111101000
    
    

    然后可以看出1000瓶水需要二进制数的位数为10位,所以找10只小白鼠,第一只小白鼠只和二进制数第一位为1的水,第二支小白鼠喝二进制数第二位为1的水,以此类推,第10只小白鼠喝二进制数第10位为1的水。

    假如7天后1,3,5三只小白鼠死了,所以二进制数为1010100000,转换为10进制数为29+27+2^5=672

    所以需要10只小白鼠就可以,此类问题既需要用二进制表表示最大数就可以了,比如1000瓶水,210是1024,因为需要10只老鼠,100瓶水,27是128,所以需要7只老鼠

  • 相关阅读:
    poj2409 Let it Bead
    bzoj1004 Cards
    Burnside引理和polay计数学习小记
    poj3294 --Life Forms
    poj3261 -- Milk Patterns
    Arch linux安装
    各种开源协议介绍
    grub2 rescue模式
    mongoDB-3.x Master Slave Replication
    Unix-like包管理器一览
  • 原文地址:https://www.cnblogs.com/yangxiaochu/p/11164215.html
Copyright © 2020-2023  润新知