12个小球称3次找次品
个乒乓球,有一个次品,不知道次品是更重还是更轻,用一台无砝码的天平称三次,找出次品,并告知次品到底是重了还是轻了,请问该怎么做?
首先,将乒乓球均分为 组,设为 ,
- 第一次:左边 ,右边 称重。
- 如果平:则次品一定在 里。
- 第二次:左边 里随便选 个,右边 里随便选 个称重。
- 如果平: 中剩下的是次品,最后一次任选一个正常乒乓球称下就知道次品是轻了还是重了。
- 不平:我们就会知道次品到底是重了还是轻了,接下来只需只需要从 里任选两个一左一右称一下即可,如果两个平,剩下的是次品;否则根据轻重判断出次品。
- 第二次:左边 里随便选 个,右边 里随便选 个称重。
- 不平:则次品一定在 或者 里。
- 第二次:取 中 个、 中 个、 中 个,左边 ,右边 称重。
- 如果平:则次品在剩下的 中,然后取 称一称,平则次品为剩下的 ,同时根据第一次不平可以判断出是轻了还是重了;否则在 中,同样根据根据第一次不平判断出结果。
- 不平:那么我们可以根据第二次和第一次天平的倾斜情况是否相同做出如下判断:如果倾斜情况相同,则次品在左边的 或者右边的 中;否则次品在左边的 中。
- 如果倾斜情况相同:第三次将 一左一右称一下,如果平,则次品为 ,根据第一次不平判断轻了还是重了;否则,同样根据第一次不平一眼看出次品。
- 如果倾斜情况不同:第三次将 一左一右称一下,根据第一次不平一眼看出次品。
- 第二次:取 中 个、 中 个、 中 个,左边 ,右边 称重。
- 如果平:则次品一定在 里。
稍微证明一下为什么第一次不平第二次也不平时可以做出上述判断:反证法,如果第一次和第二次倾斜情况相同,且次品在左边的 中,那么第一次的倾斜是由右边的 中的某个次品产生的,第二次的倾斜是由左边的 中的某个次品产生的,倾斜情况应该相反才对,与前提矛盾,故得证。
问题解决了~
换个思路思考,先考虑第一次称量的情况可以得到的信息:
第一次:
称 肯定是寄的;
称 ,如果平,可以知道次品在 个中;不平,可以知道次品在 个中,获得一次不平衡, 时不平获得的信息量更大;
称 ,如果平,可以知道次品在 个中;不平,可以知道次品在 个中,获得一次不平衡,信息量都还行;
称 ,如果平,可以知道次品在 个中;不平,可以知道次品在 个中,获得一次不平衡,不平的话直接寄,范围太大了,所以第一次绝对不能 。
称 ,只能获得一次不平衡,弟中之弟。
所以第一次只能 或者 。
第二次比较难考虑,先看第三次:
假设此时我们知道次品在 个球中,如果 ,直接寄,不可能一次就找出次品来,即使已经知道次品更重还是更轻。
如果 ,则需要先看一下我们知不知道小球到底是更轻还是更重。
如果我们已经知道小球更轻或是更重,那么就能一次找出次品来,只在这 个球里称就可以,具体操作稍微想一下应该就能知道,故不多加赘述。
如果我们不知道小球更轻还是更重,那么一定得有 ,不然找不出来。
但是,也有特殊情况,如果我们最后剩下 个小球、不知道轻重,但前面两次获得了较多关于轻重不平衡的信息,那么也有可能通过这第三次称量,一次便既找出次品又得出轻重。
想清楚了这些,我们再来看第二次称量:
先考虑 ,因为第一次平的时候获得的信息量绝对小于不平的,所以直接看平的,如果平的都可以有一种合法的方案,那么不平也一定可以,那么就找到了一个解,否则 就不行,只能去考虑 。
第一次平,得出次品在剩下的 个小球里面,根据前面对第三次的分析,我们知道第二次一定也要称 ,别的称法的话,都无法保证能够将第三次称量时的次品范围缩小到 个以内。
第二次的 ,显然只能用 个正常的和 个可能是次品的称,此时如果平,则会剩下三个可能是次品的小球,且一次不平衡的信息都没得到过,按照上面关于第三次的讨论,这种情况下显然无法找出来,因此第一次称 是不行的。
所以第一次只能称 ,然后就按着差不多的思路枚举排除一下,推着推着就推出答案了,重点是要在尽可能快速地缩小次品范围的同时得到较多的轻重不平衡的信息,拓展到其他数量的小球称量也是同样的道理,据说有个 取任意值的通解,但懒得去研究了,有兴趣的同学可以自行百度。

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· Vue3状态管理终极指南:Pinia保姆级教程