有 1000 瓶药物,但是其中有一瓶是有毒的,老鼠只要服用任意量有毒药水就会在一个星期以后死掉!请问,在一个星期内找出有毒的药 物,最少需要多少只小白鼠?
2021-01-23 17:01
465 查看
在程序员面试的时候面试官有时会考我们一些计算机编程方面的智力题,这便是一道有趣的智力题,这道题考察了我们对bit位的灵活运用。
首先1000与1024相差无几,于是我们可以用10个bit位来对这1000瓶药物进行编号,也就是将第n瓶药物的编号转化为对应的二进制。
然后我们拿10个空瓶编号为(10)(9)(8)(7)(6)(5)(4)(3)(2)(1)。将二进制的第一位(最右边的为第一位)为1的瓶子每瓶取一滴药水装入编号为(1)的瓶子,将二进制的第二位为1的瓶子每瓶取一滴药水装入编号为(2)的瓶子,以此类推。
最后用10只老鼠编号为10,9,8,7,6,5,4,3,2,1喝下对应编号瓶子的药水,一个星期后检查老鼠的存活情况。
一个星期后死了的老鼠对应位置为1,存活的老鼠对应位置数字为0,于是就组成了一个二进制数字,而这个对应的二进制数字所对应的十进制数字就是那瓶有毒药物的编号。
那这其中的道理是什么呢?因为老鼠只要服用任意量有毒药水就会在一个星期内死亡,而只要喝了有毒药水编号所对应的二进制的位数为1的药水的老鼠必定会死亡,喝了有毒药水编号所对应的二进制的位数为0的药水的老鼠不会死亡,所以最后老鼠所组成的二进制数字就对应那瓶有毒的药水。
相关文章推荐
- 三阶魔方自动求解及动态可视化matlab代码
- 患者管理之服务包
- Offer快到碗里来—ThreadLocal面试知识点一文搞定
- 【编测编学】自动化测试面试必背(下)
- 关于SQL Server 镜像数据库快照的创建及使用
- 爆肝 200 小时,我做了个编程导航!
- go modules 的使用
- pytest踩坑:NameError: name 'pytest' is not defined
- [系列] Go - 基于 GORM 获取当前请求所执行的 SQL 信息
- 像玩乐高一样玩simpletun
- C语言函数以及函数的使用
- linux切换php版本--centos7配置
- .NET 项目中的单元测试
- StarGAN v2
- 王者荣耀稀有ID名字如何设置?
- 入职以来,我和老大之间的故事。
- 请不要拒绝成熟!
- Android 高级进阶之深入剖析消息机制
- 【送书】| 小鹿下血本给各位读者送书了
- Android 高级进阶之深入剖析四大启动模式