有 3 只老鼠,8 瓶水,其中一个有毒,喝到有毒的水之后,老鼠一周后会准时死亡.

题目:有 3 只老鼠,8 瓶水,其中一个有毒,喝到有毒的水之后,老鼠一周后会准时死亡.
按照要求,写个算法,找出哪个有毒 (以程序语言实现,语言不限)

基本思路:
给瓶子编号 0~7,并把编号翻译成二进制串,刚好可以用三位二进制来表示。让三只老鼠分别对应三位二进制,然后形成如下交叉表:

        老鼠1    老鼠2   老鼠3
0   =    0        0       0
1   =    0        0       1
2   =    0        1       0
3   =    0        1       1
4   =    1        0       0
5   =    1        0       1
6   =    1        1       0
7   =    1        1       1

其中二进制位为 1 的地方表示哪只老鼠吃哪瓶药。即:
老鼠 1 应该喝 4,5,6,7 号的药;
老鼠 2 应该喝 2,3,6,7 号的药;
老鼠 3 应该喝 1,3,5,7 号的药。
最后观察的时候,可以根据老鼠死了的情况,0 表示没死,1 表示死了。
比如三只老鼠死了的情况是 (1,0,1) 则表示 5 号药是有毒的。因为只有这种情况下才会导致老鼠 1 和老鼠 3 死掉。

C++实现:

#include <iostream>

using namespace std;
int main() {
    int NUM_MOUSE = 3;
    int mouseDead[NUM_MOUSE];

    cout << "输入老鼠存活情况,1-死了,0-活着,用空格隔开:" << endl;
    for (int i = 0; i < NUM_MOUSE; i++) {
        cin >> mouseDead[i];
    }

    int drug = 0;
    for (int i = 0; i < NUM_MOUSE; i++) {
        int dead = mouseDead[i];
        drug |= (dead << (NUM_MOUSE - i - 1));
    }
    cout << "有毒的是 " << drug << " 号药!" << endl;

    return 0;
}

拓展:
假如有 1000 瓶水,只有一瓶是有毒药的,请问需要多少只老鼠来做实验?
答案是十只,也就是说 10 位二进制最大能表示 1024 个数字(从 0 开始算起)

参考链接:
百度知道:有3只老鼠,8瓶水,其中一个有毒,喝到有毒的水之后,老鼠一周后会准时死亡.

原文地址:https://www.cnblogs.com/hglibin/p/10126206.html

时间: 2024-10-12 20:21:32

有 3 只老鼠,8 瓶水,其中一个有毒,喝到有毒的水之后,老鼠一周后会准时死亡.的相关文章

问题:有1000杯水,其中有一杯是毒水,现在需要从中找出含毒药的水,可以用老鼠来实验;老鼠如果喝了有毒的水,一个小时内必死,请问如何安排试验,能够用最少的实验材料在一个小时内检测出有毒的水?

对于每一杯水,我们可以选择让哪些老鼠喝,哪些老鼠不喝,将10个老鼠编号,就可以将老鼠们的喝与不喝的情况转化成二进制,比如1号鼠和3号鼠喝,那二进制就是0000000101,那我们可以用这个二进制标识一杯水,因为2的10次方是1024,因此每杯水的二进制都可以不一样.一个小时内,喝了有毒的水的老鼠必死,根据死亡情况和老鼠的编号就判断出哪一杯水有毒,比如1号鼠和3号鼠死了,那有毒的那杯水的二进制编码就是0000000101. 原文地址:https://www.cnblogs.com/catpaint

如果是壬癸水八字的人呢?壬癸水遇风水-日课-命理-养生-日课原理与择日玄机命理养生

紧着我又接到另一个老板的电话,电话的内容是约请我晚上一起吃饭,因为他过来的时辰不好,我就让他先到我办公室坐了一会,等过了这个申时到酉时的时候再下去,因为一时分八刻,在酉时的前两刻还有申时的过度内容.所以我们在算八字的时候,要知道他的出生地和现居住,尽量要知道求测者的出生时间是几点几分,因为一个时辰要分为八刻,每一刻代表的度数也不一样,在一.二刻和七 八刻的时候就要两边跨,我们就要看他的大运是几岁运,如果是昨天立秋,今天出生的人,他是几岁运?他是逆推运必然是1虚岁岁运,如果求测者出生的时辰是在午月

水到底应该怎么喝

1,喝多少? ---流行的数据是:一天至少八杯水,(2000ml)左右的量.其实,如果会喝水,2.3杯,就足够了. 这个要因人而异,也要看当天的具体情况,还要看季节时令(夏天出汗多,要多补充水分). 2,喝水的方法? ---概括来讲:小口小口,像品茶一样(切忌猛灌,除非你特别想去多跑跑厕所):最好是喝一两口,停顿一下,调整下呼吸.(这也是一种很好的休息方式):少量多次,想起来就喝几口,保持嗓子一天是水润舒适的状态. 3,啥时候喝? ---最适宜喝水的六个时点: ①起床喝水,第一时间养胃,且能防便

5S进水不开机了修好多少钱iPhone5S进水维修多少钱5S进水不开机维修

为什么网上的价格差距这么大?为什么打电话问的商家报的价格都不一样?哪种几百块钱的屏幕(芯片)能相信吗?淘宝上面的屏幕(芯片)能相信吗?哪里能找到原装的屏幕呢?哪里的维修点才靠谱呢?北京中关村和深圳那边的维修市场能相信吗? 电子城报的二三百能相信吗?原装的配件和仿的价钱相差多少呢? 当您看到了这里,请您选择飞维智能科技有限责任公司(我们用最真挚的态度来为您服务) 我们在保证质量的前提下用最低的价格来为广大客户服务.我们的原则是(少花钱,买放心,保质量,求口碑) 工程师:罗飞报修热线:158 110

苹果手机进水维修一下大概多少钱iPhone5进水了掉水里怎么办维修主板多少钱(推荐)

为什么网上的价格差距这么大?为什么打电话问的商家报的价格都不一样?哪种几百块钱的屏幕(芯片)能相信吗?淘宝上面的屏幕(芯片)能相信吗?哪里能找到原装的屏幕呢?哪里的维修点才靠谱呢?北京中关村和深圳那边的维修市场能相信吗? 电子城报的二三百能相信吗?原装的配件和仿的价钱相差多少呢? 当您看到了这里,请您选择飞维智能科技有限责任公司(我们用最真挚的态度来为您服务) 我们在保证质量的前提下用最低的价格来为广大客户服务.我们的原则是(少花钱,买放心,保质量,求口碑) 工程师:罗飞报修热线:158 110

耳道进水易致外耳炎_耳朵进水滴点硼酸酒精

如果直接侧身入水,注意跳水的姿势,所以,会使耳朵直接受水拍击,2.并且动作稍微快一点.跳水要保证正面入水,鼓膜则容易裂开.穿孔. 耳朵入水滴点硼酸酒精 一般不会有问题.结果弄穿耳膜,陈锡辉认为,所以,只要控制用力不要太猛,令听力神经受损的情况.伸入别太深,针对曾有香港人用棉花棒吸水,你在操作时一定得温柔. 的人也不宜下水.把耳膜切开放置过塑料管 ●曾做过耳部手术, 而又有鼻塞症状的人,●一般游泳池水温与外界的温差都比较大,下水会使感冒加重,诱发中耳炎.患有严重感冒, 所有耳部疾病在治疗期间应避免

耳道进水易致外耳炎1耳朵进水滴点硼酸酒精

造成听力下降.1.否则泡涨后容易引起疼痛发炎,游泳前,把耳朵内的耵聍(耳屎)取出,甚至把耳道堵塞, 棉花纸巾不防水 症状病因 当然,防止水进入耳朵.你也可以选购游泳用耳塞,如果耳塞太硬,游泳中容易脱落.真有点困难.耳塞不是按照你的耳道设计的,但要找到合适的耳塞,同样会引起耳朵疼痛.所以使用起来并不方便.如果耳塞太小, 可以最大限度减少游泳对耳部伤害.稍微做些简单的准备工作,其实, 把耳膜切开放置过塑料管的人也不宜下水.●曾做过耳部手术, 如果不及时处理,而游泳池水含有大量细菌,游泳时很难避免耳朵

HDOJ(HDU) 2500 做一个正气的杭电人(水~)

Problem Description 做人要有一身正气,杭电学子都应该如此.比如我们今天的考试就应该做到"诚信"为上. 每次考试的第一个题目总是很简单,今天也不例外,本题是要求输出指定大小的"HDU"字符串,特别地,为了体现"正气"二字,我们要求输出的字符串也是正方形的(行数和列数相等). Input 输入的第一行包含一个正整数N(N<=20),表示一共有N组数据,接着是N行数据,每行包含一个正整数M(M<=50),表示一行内有M个

【省选水题集Day1】一起来AK水题吧! 题目(更新到A)

题解:http://www.cnblogs.com/ljc20020730/p/6937954.html 水题A: [AHOI2001]质数和分解 题目网址: https://www.luogu.org/problem/show?pid=2563 题目描述 任何大于 1 的自然数 n 都可以写成若干个大于等于 2 且小于等于 n 的质数之和表达式(包括只有一个数构成的和表达式的情况),并且可能有不止一种质数和的形式.例如,9 的质数和表达式就有四种本质不同的形式: 9 = 2 + 5 + 2 =