`

1000个瓶子和10只老鼠问题浅解

阅读更多

1000 个一模一样的瓶子,其中有 999 瓶是普通的水,有一瓶是毒药。任何喝下毒药的生物都会在一星期之后死亡。现在,你只有 10 只小白鼠和一星期的时间,如何检验出哪个瓶子里有毒药?

根据2^10=1024,所以10个老鼠可以确定1000个瓶子具体哪个瓶子有毒。具体实现跟3个老鼠确定8个瓶子原理一样。

000=0

001=1

010=2 

011=3 

100=4 

101=5 

110=6 

111=7
一位表示一个老鼠,0-7表示8个瓶子。也就是分别将1357号瓶子的药混起来给老鼠1吃(看右起第一列),2367号瓶子的药混起来给老鼠2吃,4567号瓶子的药混起来给老鼠3吃,哪个老鼠死了,相应的位标为1。如老鼠1死了、老鼠2没死、老鼠3死了,那么就是101=5号瓶子有毒。
同样道理10个老鼠可以确定1000个瓶子。【题目做了个巧妙的障眼,把1024改成1000

 

如果你有两个星期的时间(换句话说你可以做两轮实验),为了从1000个瓶子中找出毒药,你最少需要几只老鼠?注意,在第一轮实验中死掉的老鼠,就无法继续参与第二次实验了。

答:7只老鼠就足够了。事实上,7只老鼠足以从 3^7 = 2187 个瓶子中找出毒药来。首先,把所有瓶子从0999编号,然后全部转换为7位三进制数。现在,让第一只老鼠喝掉所有三进制数右起第一位是 2 的瓶子,让第二只老鼠喝掉所有三进制数右起第二位是2的瓶子,等等。一星期之后,如果第一只老鼠死了,就知道毒药瓶子的三进制编号中,右起第一位是2;如果第二只老鼠没死,就知道毒药瓶子的三进制编号中,右起第二位不是2,只可能是0或者1……也就是说,每只死掉的老鼠都用自己的生命确定出了,三进制编号中自己负责的那一位是2;但每只活着的老鼠都只能确定,它所负责的那一位不是2

于是,问题就归约到了只剩一个星期时的情况。在第二轮实验里,让每只活着的老鼠继续自己未完成的任务,喝掉它负责的那一位是 1 的所有瓶子。再过一星期,毒药瓶子的三进制编号便能全部揭晓了。

总结:n只小白鼠和t周的时间可以从(t+1)^n个瓶子中检验出毒药(一瓶)来。(

 

8个瓶子,1只老鼠但有3条命,时间限制3个星期

老鼠先喝右起第1为为1的药,死了则缩小到1357号瓶子,用时一周;第二周,和右起第2位为1的瓶子,一次类推。

分享到:
评论

相关推荐

    java 10元钱买酒2元一瓶,2个瓶子或4个盖子可以兑1瓶酒,最后喝了多少瓶酒

    仅供娱乐 10元钱买酒2元一瓶,2个瓶子或4个盖子可以兑1瓶酒,最后喝了多少瓶酒

    灵性彩油所有瓶子破解分享.pdf

    每个瓶子包含了特定的颜色组合,通过水晶和植物的能量,以及与Kabbala的生命之树、塔罗牌、易经、占星术和印度教的脉轮系统等多元学问的关联,帮助人们理解自身灵魂的特质、天赋、任务以及当前需要面对的挑战。...

    幼儿园教案2021-小班科学 瓶子和盖子.doc

    这篇文档是一个针对幼儿园小班的科学教案,主题是“瓶子和盖子”。教案的主要目标是让孩子们初步了解瓶子和瓶盖的功能,以及如何根据瓶口的特性选择合适的盖子,同时通过实践活动发展他们的手部动作技能。 在活动...

    yolov5 瓶子检测数据集 bottle_瓶子检测数据集.rar

    这个数据集是针对瓶子的检测专门设计的,适用于训练YOLOv5模型,帮助计算机在图像中精确识别出瓶子的位置和形状。 ### 数据集结构 数据集通常包含训练集(train)、验证集(val)和测试集(test),但这里没有明确...

    一个简单的Opencascade环境和瓶子运行示例

    标题中的“一个简单的Opencascade环境和瓶子运行示例”表明了这个压缩包包含了一个使用Opencascade库创建的C++程序,该程序可能用于展示如何在Visual Studio 2008环境下构建3D模型,特别是瓶子的模型。Opencascade是...

    YOLO瓶子检测数据集 bottle_VOCtrainval2012.zip

    总的来说,"bottle_VOCtrainval2012"数据集是一个专门为YOLO瓶子检测设计的资源,包含了丰富的图像和对应的标注,为开发者提供了训练和验证目标检测模型的必要素材,有助于推动在实际场景中对瓶子进行精准检测的技术...

    幼儿园教案2021-小班综合活动:我和瓶子做朋友.doc

    【教案名称】:小班综合活动 - 我和瓶子做朋友 【教案概述】: 本教案旨在通过与瓶子互动的游戏,激发小班幼儿的兴趣,让他们在玩乐中学习和成长。活动围绕“瓶子”这一常见生活物品展开,设计了一系列富有趣味性和...

    iOS捞瓶子图片

    在iOS应用开发中,"捞瓶子图片"这个主题可能指的是一个特定的应用功能或者设计元素,通常与社交或娱乐类应用相关。漂流瓶作为一款经典的游戏元素,常常被用于让用户发送匿名消息或者寻找新朋友,因此在iOS应用中,捞...

    mac版抓包工具,免激活,瓶子https抓包工具

    抓包工具的主要作用是帮助用户监控和记录网络数据包,以便分析网络性能、调试应用或检测安全问题。这里的“瓶子”工具被描述为“好用”,意味着它具有用户友好的界面和高效的功能。 标签中提到的“抓包”是指网络...

    VOC瓶子检测数据集 bottle_VOCtrainval2007.zip

    VOC瓶子检测数据集是一个专为机器学习和计算机视觉任务设计的专业数据集,特别是针对物体检测的应用。这个数据集是从著名的PASCAL VOC (Visual Object Classes) Challenge 2007的数据集中提取出来的,它专注于单一的...

    瓶子Flash源码

    【瓶子Flash源码】是一个关于使用Flash开发的互动动画项目,其核心是通过源代码实现瓶子动态跳动的效果。这个项目包含多个关键组件和文件,每个都有特定的作用,以完成整个动画的创建和运行。 首先,`bubble_mc.as`...

    换瓶子问题,简单的c语言逻辑,侵删

    有N个瓶子,编号 1 ~ N,放在架子上。比如有5个编号瓶子:2 1 3 5 4。要求每次拿起2个瓶子,交换它们的位置。经过若干次后, 使得瓶子的序号为:1 2 3 4 5。对于这么简单的情况,显然,至少需要交换2次就可以复位。...

    Autodesk123D做个瓶子.pdf

    教程中使用了圆阵列(Pattern - Circle),选择球体作为列阵物体,然后选取一个圆作为旋转轴,输入阵列数量(如10个),从而在瓶口创建出均匀分布的小孔。 6. **视图控制与视角调整**:在建模过程中,通过鼠标拖动...

    瓶子和人的标记(yolo格式)

    标题中的“瓶子和人的标记(yolo格式)”指的是一个图像识别项目,使用了YOLO(You Only Look Once)算法来标注图像中的瓶子和人。YOLO是一种实时目标检测系统,它能快速地在图像中定位并识别出多个对象。在这个项目...

    49个瓶子的心理测试.doc

    这个测试涵盖了49种不同的性格特征,每个瓶子都代表了一种特定的品质和潜在的挑战。 【0号瓶】灵性解救瓶关联的是塔罗牌中的“傻瓜”,象征着神秘、直觉力强以及对混乱状况的适应能力。选择这个瓶子的人可能正经历...

    minecraft存档:瓶子世界

    在“瓶子世界”存档中,玩家被置于一系列瓶子内部,每个瓶子都是一个独立的小生态系统,包含了生物、资源和环境元素。这样的设计极大地增加了游戏的探索性和趣味性,因为玩家需要在狭小的空间内寻找生存所需的物品和...

    光电图像瓶子检测

    用MATLAB进行瓶子合格检测,基于灰度值的检测

    果汁瓶子3D模型效果图

    本资源“果汁瓶子3D模型效果图”是专为果汁包装设计而制作的一款高质量3D模型,旨在提供一个逼真的视觉参考,帮助设计师们在创作过程中更加直观地了解产品的立体形态和细节。 首先,3D模型是指通过计算机图形学技术...

    各种瓶子检测数据集6666张-含voc(xml)+yolo(txt)+json三种格式标签.7z

    瓶子识别检测数据集(课程作业、设计、比赛所用)【实际项目应用】:常见物品识别检测、无人售货机物品识别等【数据集说明】:瓶子识别...【备注】数据大小接近1000M,博主只传高质量数据,拒绝低质量数据,放心下载!

    每瓶可乐只要1元,每2个空瓶可以换一个,现给你20元,问你最多能喝多少瓶?

    接着,这10瓶可乐又会产生10个空瓶,但我们只能用其中的9个瓶子去换(因为需要2个空瓶才能换1瓶),得到4瓶可乐(9除以2取整数部分)。现在我们有4个新空瓶,加上之前剩下的1个空瓶,共5个,可以再换得2瓶可乐(5...

Global site tag (gtag.js) - Google Analytics