100 瓶水里藏着 1 瓶毒药,找毒瓶居然不用 100 只老鼠?只用 7 只就能精准锁定,这个经典逻辑题不仅烧脑,还藏着普通人能直接用上的思维妙招。
很多人看到题第一反应就是堆老鼠,每只对应一瓶水,一周后看哪只死了就能对应找到毒瓶。但这种方法要用到 100 只老鼠,不仅浪费资源,也完全不是最优解。只用 7 只老鼠就能搞定,核心就藏在二进制的逻辑里。
我们日常用的是十进制,满 10 进 1,每个数位对应 10 的不同次方。而二进制是满 2 进 1,每个数位只有 0 和 1 两种状态,就像电灯的开关,开对应 1,关对应 0。
比如二进制数 1101,从右往左对应的数位分别是 2⁰、2¹、2²、2³,换算成十进制就是 1×8 + 1×4 + 0×2 + 1×1 =13,是不是很好理解?
把 1 到 100 的所有瓶子都转换成二进制,会发现最大的 100 对应的二进制是 7 位数,所以我们只需要把所有编号都补齐成 7 位二进制就行。
我们先给每瓶水按十进制编号,再统一转成 7 位二进制格式。接下来给每只老鼠分配对应任务:
第一只老鼠喝所有二进制最右一位(对应 2⁰位)是 1 的瓶子;第二只喝对应 2¹ 位是 1 的瓶子,以此类推,直到第七只老鼠对应 2⁶位。
一周后看老鼠的存活情况:死了的老鼠对应数位是 1,没死的则是 0。把这些 0 和 1 按从左到右的顺序组合起来,就是毒瓶的二进制编号,最后转换成十进制就是目标瓶子的编号。
举个具体例子,如果第一、第三、第四只老鼠死了,对应的二进制就是 1101,换算成十进制就是 13 号瓶子,是不是精准又高效?
再换一个例子,二进制数 11101 对应的十进制是 29,也就是第一、二、三、五只老鼠死亡,对应的就是 29 号瓶子有毒。
这种用二进制做分组排查的思路,不止能解决找毒瓶的问题,日常里的分组测试、快速排查故障、甚至职场里的任务分配都能用上。看懂这个逻辑,下次遇到类似的烧脑题,你也能快速找出最优解。
热门跟贴