👋Hi~ o( ̄▽ ̄)ブ这里是猪猪程序员
👀 很高兴见到你O(∩_∩)O!
🌱 现在正在发芽中…
💞️ 博主水平有限,如果发现错误,一定要及时告知作者哦 o( ̄︶ ̄)o!感谢感谢!
📫博主的码云 gitee,平常博主写的程序代码都在里面。
问题描述
有 1000 瓶药物,但是其中有一瓶是有毒的,小白鼠吃了一个星期以后就会死掉!请问,在一个星期内找出有毒的药物,最少需要多少只小白鼠?
解题思路
解答:
1. 由于1000与1024很接近,我们可以用10个bit位来对这1000瓶药物进行编号,也就是将第n瓶药物的编号转化为对应的二进制。第1
瓶的编号为0000000001
,第1000
瓶的编号为1111101000
。
2. 我们拿10个空瓶编号为(10)(9)(8)(7)(6)(5)(4)(3)(2)(1)
。
3. 将二进制的第一位(最右边的为第一位)为1的瓶子每瓶取一滴药水装入编号为(1)的瓶子,将二进制的第二位为1的瓶子每瓶取一滴药水装入编号为(2)的瓶子,以此类推。
4. 用10只老鼠编号为10,9,8,7,6,5,4,3,2,1
喝下对应编号瓶子的药水,一个星期后检查老鼠的存活情况。一个星期后死了的老鼠对应位置为1,存活的老鼠对应位置数字为0,于是就组成了一个二进制数字,而这个对应的二进制数字所对应的十进制数字就是那瓶有毒药物的编号。