智力题可怜的小白鼠又被下药了(*^@^*)o,你能找到那瓶毒药吗?

Posted 快乐的星球

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了智力题可怜的小白鼠又被下药了(*^@^*)o,你能找到那瓶毒药吗?相关的知识,希望对你有一定的参考价值。

✨前言✨:

编程是一个脑力活,适当的做一些智力题可以锻炼脑子,本专栏收录了一些既有趣味性又可以锻炼脑子的智力题,还望大家在闲暇之余可以锻炼锻炼脑子,增强自己编程内功。如果对大家有帮助,别忘了三连支持哟!

目录

✨前言✨:

✨题目✨

✨思路分析✨

如何给药物进行编号?

 如何将死讯转化为药物的编号?



✨题目✨

有 1000 瓶药物,但是其中有一瓶是有毒的,小白鼠吃了一个星期以后就会死掉!请问,在一个星期内找出有毒的药物,最少需要多少只小白鼠


✨思路分析✨

💡这题乍一看有两个难点:

     1:用什么方式给药物进行编号?

     2:小白鼠死后,怎样把小白鼠的死讯转化为药物的编号?

现在我们先分析第一个难点:

如何给药物进行编号?

🔑因为药物有1000瓶之多,用一个个变量储存编号不现实,而创建一个数组空间又太浪费。

在这时我们就应该换一种思路,用二进制序列进行存储,因为 2^10=1024 大于1000,所以只需要10个比特位的空间大小就能给1000瓶药进行编号。

🔑 图示:

 

 如何将死讯转化为药物的编号?

🔑为了找到那瓶毒药,我们为方便表示出那瓶毒药,对所有药都进行了编号。在那1000瓶药中有且仅有一瓶毒药,如果想找出毒药,唯一的方法是让小白鼠把1000瓶药全部喝一遍(因为喝到毒药后一星期后才会毒发),在一星期后得知小白鼠死讯后,通过死讯找到毒药的二进制序列,进而得到毒药的十进制编号。所以一切的问题都转变为如何通过死讯得出小白鼠的编号。

💡 从小白鼠的死讯,我们可以得到两个信息:

     1:有多少只小白鼠死了

     2:具体是哪些小白鼠死了

也就是说我们要找到一种方法,由这两个信息推理出药的二进制序列,而如果我们要找到这个方法,就必须了解怎样可以得到二进制序列。

💡因为二进制序列是由0和1组成的,所以想要得到一个二进制序列,等价于得到如下两个信息:

     1:这个二进制序列有多少个1

     2:具体哪些比特位是1

想必大家已经发现了,从小白鼠死讯得到的两个消息和得到二进制序列需要的两个信息,存在一一对应的关系,也就是我们需要通过有多少只小白鼠死了确定二进制序列有多少个1,并且在二进制序列中为1的比特位上必定有对应的老鼠喝了毒药。所以我们不难想到要对小白鼠进行编号处理,从而建立起小白鼠和二进制序列位数的一一对应关系。

例如:如果最后只有1号和3号小白鼠死了,我们可以知道二进制序列中有两个1,并且知道第一位和第三位是1,则药的编号是5:​​​

💡:具体方法图解

由于我们一开始不知道毒药的二进制序列有多少个1,所以我们至少需要10只老鼠才能确保一定找出毒药。


          由于本人水平十分有限,若有错误请即使告知!如果有帮助别忘了,万分感谢。

点赞👍         收藏✨    关注✌

以上是关于智力题可怜的小白鼠又被下药了(*^@^*)o,你能找到那瓶毒药吗?的主要内容,如果未能解决你的问题,请参考以下文章

数学题目

智力题目集锦

面试智力题

小白都会的一道题!但是你能写几种? 《建议收藏 慢慢品!》

智力测试:你能看出来谁是外星人吗?

智力测试:你能看出来谁是外星人吗?