【面经】之小鼠喝药问题

news2025/4/3 0:51:33

题目

现在有 10 只小白鼠和 1000 支药水,1000 支药水中有且仅有一支药水有毒,如果小白鼠喝下毒药,那么毒发的时间是两小时。

现在只给你两小时的时间,请问如何用这 10 只小白鼠测出哪支药水有毒?(忽略小白鼠喝药的时间)。

思考

当时听完这题,我第一反应是:这题是不是在逗我?

就 10 只小白鼠,喝 1000 支药水,那么一只小白鼠肯定要喝多支药水,假设某只小白鼠两小时后死了,我怎么确定它到底是因为喝了哪支药水死的?

我直接把我的这个想法跟面试官说了,我说这题目是不是有问题,面试官微微一笑,他说题目没问题,你再想想

再想想

看到这,不知道诸位是否有啥想法,期间面试官给了我一个提示:10 如何能代表 1000

这里建议先想个两分钟,各位再思考思考,没啥思路再看我下面的解答。

解答

不卖关子了,反正我当时没想出来,哈哈,一下子联想不到那里,但是这题听完答案之后又会豁然开朗。

10 如何能代表 1000?重点就是这个提示,其实就是二进制。

10 只小白鼠,我们分别给它们编号,从 0-9。

图片

每只老鼠喝下药水,最终的结果要么是生,要么是死,所以有两种状态。

看到这是不是有点感觉了?

两种状态就是二进制的 0 和 1。

如下图所示:

图片

所以,每只小白鼠有两种状态,那么 10 只小白鼠联合起来,2 的 10 次方是 1024,当然可以表示 1000 个数字了。

然后我们给每只药水编号,从 0-999。

好了,操作来了

0 二进制表示,是 0000000000

1 二进制表示,是 0000000001

2 二进制表示,是 0000000010

3 二进制表示,是 0000000011

999 二进制表示,是 1111100111

可以看到我把药水编号转成二进制,一共写了 10 位,每一位其实就表示对应一只小白鼠喝不喝这个药水

就是说第 0 个小白鼠,把药水编号第 0 位是 1 的药水都喝一遍。

第 1 个小白鼠,把药水编号第 1 位是 1 的药水都喝一遍。

第 2 个小白鼠,把药水编号第 2 位是 1 的药水都喝一遍。

第 9 个小白鼠,把药水编号第 9 位是 1 的药水都喝一遍。

这样设计之后,除了第 0 瓶药水,其它药水都有小白鼠喝了,所以如果没有小白鼠死亡,那么第 0 号药水有毒。

那么,如果有小白鼠死亡该怎么判断?

其实很好理解,假设现在是编号 3 的药水有毒,我们得知编号 3 的二进制是:0000000011

丛上面的规则我们知道,有且仅有第 0 个和第 1 个老鼠喝了编号 3 这个药水,所以如果别的老鼠都没死,只有这两个老鼠死了,那么我们可以断定编号 3 药水是毒药。

所以,我们让对应的老鼠喝对应的药水,然后两小时之后观察哪几只老鼠死亡,我们就可以从死亡的老鼠编号反推出毒药的编号。

假设现在第 0、1、3、5 老鼠死了,那么毒药水编号就是:2^0 + 2^1 + 2^3 + 2^5 = 1 + 2 + 8 + 32 = 43。

好了,解答完毕。(其实这个题干应该再补充下,每支药水量充足,足够每只小白鼠喝一口)

现在想想这个方式是不是有点巧妙?有点拓宽思路的感觉。

最后

这道题看起来好像是智力题,其实给了提示之后就是考察对二进制的掌握程度了。

现在想想这个方式是不是有点巧妙?有点拓宽思路的感觉。

最后

这道题看起来好像是智力题,其实给了提示之后就是考察对二进制的掌握程度了。

二进制其实在很多场景都有比较深入的运用,其实就是位域的用法。


本文微信公众号转载,如有冒犯联系删除

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/5590.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Java编程进阶】标识符和关键字

在学习Java程序设计基础的时候,主要有标识符,变量,数据类型,流程控制这些主要的内容。 推荐学习专栏:Java 编程进阶之路【从入门到精通】 文章目录1. 标识符2. 关键字1. 标识符 什么是标识符? 标识符是用…

linux下的PPPOE设置

1.打开终端 #sudo pppoeconf 进入配置,输入用户名和密码. 2.建立连接 #sudo pon dsl-provider 3.断开连接 #sudo poff dsl-provider Welcome to the ADSL client setup. First, I will run some checks on your system to make sure the PPPoE client is installed properly.…

The 2022 CCPC Guangzhou Onsite M. XOR Sum(数位dp 数位背包)

题目 给定n,m,k(0<n<1e15,0<m<1e12,1<k<18)&#xff0c; 求长度为k的数组a&#xff0c;ai为[0,m]的整数&#xff0c; 满足的方案数 答案对1e97取模 题解 第一反应想起了hdu3693&#xff0c;但比对了一下&#xff0c;感觉那个题难很多&#xff0c; 两年…

一看就会的Java方法

文章目录一、方法的定义和使用&#x1f351;1、为什么引入方法&#xff1f;&#x1f351;2、方法的定义&#x1f351;3、方法调用的执行过程&#x1f351;4、实参和形参的关系二、方法重载&#x1f351;1、为什么需要方法重载&#x1f351;2、方法重载的概念和特点&#x1f351…

四旋翼无人机学习第8节--OpenMV电路分析

这里写目录标题0 前言1 openmv优秀作品介绍2 stm32单片机原理图绘制3 stm32单片机外接电容分析3 stm32单片机外接电容绘制4 stm32单片机外接晶振分析5 stm32单片机外接晶振绘制6 stm32单片机复位电路分析7 stm32单片机复位电路设计0 前言 简单的说一下&#xff0c;openmv模块是…

微信小程序 | 吐血整理的日历及日程时间管理

&#x1f4cc;个人主页&#xff1a;个人主页 ​&#x1f9c0; 推荐专栏&#xff1a;小程序开发成神之路 --【这是一个为想要入门和进阶小程序开发专门开启的精品专栏&#xff01;从个人到商业的全套开发教程&#xff0c;实打实的干货分享&#xff0c;确定不来看看&#xff1f; …

关于宝宝过敏原检测的这几点,专家达成共识啦

随着传染病发病率的下降&#xff0c;儿童过敏性疾病的发病率逐年上升&#xff0c;引起了公众和医务人员的广泛关注。四川省妇幼保健医院检验科目前可进行过敏原检测。根据超敏反应的发生机制和临床特点&#xff0c;可分为四种类型。我们所谓的过敏原检查是特异性的IgE相关的Ⅰ超…

React源码之Fiber架构

对于Fiber我们可以理解为存储在内存中的Dom 对于React15在render阶段的reconcile是不可打断的&#xff0c;如果在操作大量的dom时&#xff0c;会存在卡顿&#xff0c;因为浏览器将所有的时间都交给了js引擎线程去执行&#xff0c;此时GUI渲染线程被阻塞&#xff0c;导致页面出现…

PyTorch搭建循环神经网络(RNN)进行文本分类、预测及损失分析(对不同国家的语言单词和姓氏进行分类,附源码和数据集)

需要源码和数据集请点赞关注收藏后评论区留言~~~ 下面我们将使用循环神经网络训练来自18种起源于不同语言的数千种姓氏&#xff0c;并根据拼写方式预测名称的来源。 一、数据准备和预处理 总共有18个txt文件&#xff0c;并且对它们进行预处理&#xff0c;输出如下 部分预处理…

Windows版Ros环境的搭建以及Rviz显示激光点云信息

安装步骤&#xff1a; 1.安装visual studio 2019-2022 2.安装ROS 3.创建ROS快捷终端 4.运行测试效果 一、安装Visual Studio 2022 需要利用vs编译ROS代码&#xff0c;所以需要安装Visual Studio 2022 这里注意要使用vs2022&#xff0c;ROS wiki给的教程是使用2019 1).使…

Python学习小组课程-课程大纲与Python开发环境安装

一、前言 注意&#xff1a;此为内部小组学习资料&#xff0c;非售卖品&#xff0c;仅供学习参考。 为提升项目落地的逻辑思维能力&#xff0c;以及通过自我创造工具来提升工作效率&#xff0c;特成立Python学习小组。计划每周花一个小时进行在线会议直播学习&#xff0c;面向…

力扣21 - 合并两个有序链表【归并排序思维】

链式铠甲——合体一、题目描述二、思路分析三、代码详解way1【不带头结点】way2【带头结点】四、整体代码展示【需要自取】方法一&#xff1a;不带哨兵位【无头结点】方法二&#xff1a;带哨兵位【有头结点】五、总结与提炼一、题目描述 原题传送门&#x1f6aa; 将两个升序链…

vs2019编译ffmpeg4.4为静态库或动态库

参考文章&#xff1a;vs2019编译ffmpeg源码为静态库动态库【完整步骤、亲测可行】 文章目录编译测试编译 直接把博主的项目下下来 我打开里面FFmpeg文件发现它貌似是4.4版本 然后照着他给的步骤执行命令 先找到vs2019的命令行工具 然后执行两个脚本 执行以上两个脚本后&…

快速排序和归并排序非递归的详解

在经过主页中《八大排序》&#xff08;下&#xff09;的学习&#xff0c;我们了解了快速排序和归并排序且都是递归的思想&#xff0c;但是如果递归的深度很深呢&#xff1f;这一节我们就引出用非递归的思想解决这个问题。&#x1f635;&#x1f635;&#x1f635; 快速排序非递…

根据给定数组,创建形状相同的数组并且采用不同方式填充full_like()

【小白从小学Python、C、Java】 【计算机等级考试500强双证书】 【Python-数据分析】 根据给定数组&#xff0c;创建形状相同的数组 并且采用不同方式填充 full_like() [太阳]选择题 对下面代码中full_like函数结果描述错误的选项为&#xff1f; import numpy as np print(&q…

谷粒学院——Day05【后台系统前端项目创建、讲师管理模块前端开发】

后台系统前端项目创建 一、vue-element-admin 简介 vue-element-admin 是基于 element-ui 的一套后台管理系统集成方案。 功能&#xff1a;https://panjiachen.github.io/vue-element-admin-site/zh/guide/#功能 GitHub地址&#xff1a;https://github.com/PanJiaChen/vue-ele…

分布式锁_Redis分布式锁+Redisson分布式锁+Zookeeper分布式锁+Mysql分布式锁(原版)

分布式锁_Redis分布式锁Redisson分布式锁Zookeeper分布式锁Mysql分布式锁&#xff08;原版&#xff09; 文章目录分布式锁_Redis分布式锁Redisson分布式锁Zookeeper分布式锁Mysql分布式锁&#xff08;原版&#xff09;1. 传统锁回顾1.1. 从减库存聊起1.2. 环境准备1.3. 简单实现…

Dreamweaver网页设计与制作100例——HTML5期末考核大作业——票务网站整套网页

HTML实例网页代码, 本实例适合于初学HTML的同学。该实例里面有设置了css的样式设置&#xff0c;有div的样式格局&#xff0c;这个实例比较全面&#xff0c;有助于同学的学习,本文将介绍如何通过从头开始设计个人网站并将其转换为代码的过程来实践设计。 文章目录一、网页介绍一…

正确查询DO基站IP

对于DO站的IP地址在系统中设置是否正确需要确定基站侧IP地址和RNC侧地址是否匹配&#xff0c;匹配关系为&#xff1a;基站侧IP地址减2即为RNC侧地址&#xff08;如&#xff1a;RCS 234 BTS-IP: 6.33.84.30 则匹配RNC侧地址即为6.33.84.28&#xff09;&#xff0c;下面举例进行襄…

基于单片机的语音小车设计

目 录 引言 1 1 系统概述 1 1.1 声控产品前景和发展趋势 1 1.2 研究目的和意义 1 1.3 本次设计内容 2 2 系统设计的整体方案 2 2.1 主控芯片的方案论证 2 2.2 语音识别模块的方案论证 3 2.3 电机驱动方案选择 4 2.4 本章小节 4 3 系统…