题目论述:12个长相一样的球中仅有1个球与其他球质量不同,且不确定是重还是轻。请用天枰进行不超过三次的称重,检测出是哪个球与众不同,并且要得出是重还是轻的结论。
为叙述方做如下定义。
定义1:与众不同的球为X球,11个相同的球为O球,若与众不同的球比其他11个球重,则为重球,否则为轻球。
定义2:称重中若球A比B重,则A>B;若天枰平衡则A=B;表达式中的A,B,C。。。等编号直接代表编号为A,B,C球的质量。
称重的方法流程如下:
STEP1:任意取出8个球分成两组称重,将球进行编号A+B+C+D vs E+F+G+H。
如果天枰平衡,说明X球在未称重的4个球中,进行STEP2,否则进行STEP3。
STEP2:由STEP1得出称重的8个球为O球,另四个球编号A,B,C,D。取出一个O球组成如下图组合称重 O+A vs B+C
Case1:O+A=B+C,说明D球为X球,取出任意O球进行第三次称重 O vs D,若O>D则D为轻球,反之为重球。
Case2:O+A>B+C,进行第三次称重 B vs C:
如果B>C :则在B,C中存在轻球,且B为O球,C为轻球。
如果B<C :则在B,C中存在轻球,且B为轻球,C为O球。
如果B=C :则A为X球,又因O+A>B+C,则A为重球。
Case3: O+A<B+C,进行第三次称重B vs C:
如果B>C:则在B,C中存在重球,且B为重球,C为O球。
如果B<C:则在B,C中存在重球,且B为O球,C为重球。
如果B=C:则A为X球,又因O+A<B+C,则A为轻球。
STEP3:由STEP1得到8个未定球中有一个特别球,不妨设天枰形态为A+B+C+D>E+F+G+H ①
进行第二次测量O+A+E vs B+F+G ,即在第一次测量的基础上交换B和E,用任一
O球置换C球,天枰两侧各去掉一个D和H。
Case1:O+A+E = B+F+G,说明在①式中A,B,E,F,G均为O球,①式化简为C+D>O+H。
进行第三次测量称重C vs D,此情形同STEP2中case3.
如果C>D:则在C,D中存在重球,且C为重球,D为O球;
如果C<D:则在C,D中存在重球,且C为O球,D为重球;
如果C=D:则H为X球,又因C+D>O+H,则H为轻球。
Case2:O+A+E > B+F+G②,说明STEP3中去掉的C,D,H为O球,且交换过程中无影
响的B和E也为O球,此时②化简为O+A>F+G,第三次称重F vs G。
如果F>G:则在F,G中存在轻球,且F为O球,G为轻球;
如果F<G:则在F,G中存在轻球,且F为轻球,G为O球;
如果F=G:则A为X球,且A为重球。
Case3:O+A+E < B+F+G,说明交换的B和E中有一个是X球,且B>E。此时用任一O球同B和E中任一一球称重,不妨 O vs B。
如果O=B,则E为轻球。
如果O<B,则B为重球。
不会出现O>B的情况,反之若O>B,则B为轻球,E为O球,矛盾!
在称重过程得出两个有用的结论。
结论一:称重中经常会出现一个特定的情形:4个球中有一个是O球,其他3个未知球中有一
个是X球,将四个球任意分成两组,不妨设O+A vs C+D,此时将得到天枰的一个状态,然后
再 次称重 C和D便可得出三个未知球中的所有信息。
结论二:8个球在已知天枰形态的情况下再经过两次称重可以得到所有信息;4个球分成两组
在未知天枰形态下经过2次称重可得到所有球的信息。而所有的情况都可以化为最简单的结论
一的情形。
一般情形下的再说吧,太难了。
相关推荐
现在有 number 个小球依次从结点 1 处开始下落,那么最后一个小球将会落到哪里呢? 输入满二叉树的深度 depth(depth)和小球个数 number,输出第 number 个小球最后所在 的叶子结点的编号。 例如: 若输入 4 2,则...
用C++编程求解: 一球从100m高度自由落下,每次落地后反弹回原高度的一半,再落下。求它在第10次落地时,共经过多少m?第10次反弹多高?
小球下落小球下落问题的实物演示小球下落小球下落问题的实物演示
小球反弹问题的物理意义在于展示和模拟了基本的力学原理,特别是牛顿的运动定律和能量守恒定律。这个问题涉及到重力、速度、加速度、动量以及动能和势能之间的转换等物理概念。 以下是小球反弹问题物理意义的具体...
小球反弹问题c语言 小球反弹问题是一个经典的物理学问题,通常涉及到计算小球在一定高度上的反弹次数、反弹后的高度等。你可以用C语言来实现这个问题的计算。以下是一个简单的示例代码,用于计算小球在给定高度上的...
C++ 小球碰撞 C++ 小球碰撞 C++ 小球碰撞
在C语言中模拟小球反弹的问题,通常需要设置一个模拟环境,其中包括小球的位置、速度、反弹面(如墙壁)的位置等。以下是一个简单的示例,模拟一维空间中小球在两个固定墙壁之间反弹的情况。 这个示例程序模拟了一...
C语言实现小球落地问题
小球下落课程设计小球下落 小球下落课程设计小球下落 小球下落课程设计小球下落小球下落课程设计小球下落 小球下落课程设计小球下落 小球下落课程设计小球下落 v小球下落课程设计小球下落
小球反弹问题c语言 在这个程序中,我们首先要求用户输入小球的初始高度和弹起高度的阈值。然后使用一个循环来模拟小球的反弹过程,直到小球弹起的高度小于阈值为止。程序会输出每次弹起后的高度以及总共弹起的次数...
小球跟随鼠标小球跟随鼠标小球跟随鼠标小球跟随鼠标小球跟随鼠标小球跟随鼠标
小球反弹问题c语言小球反弹问题是一个简单而有趣的物理模拟问题,通过C语言的实现,我们可以更加深入地理解物理规律和编程技巧。在实际应用中,我们还可以根据需要对代码进行扩展和优化,比如增加图形界面、调整参数...
有两个小球,第一个小球竖直下落,直到与下方静止的小球相切碰撞后,静止的小球水平移动,下落的小球停止
J2ME中小球碰撞检测之后自动反弹,算法设计非常精巧
小球碰撞 课程设计 小球碰撞 课程设计 小球碰撞 课程设计 小球碰撞 课程设计 小球碰撞 课程设计 小球碰撞 课程设计小球碰撞 课程设计 小球碰撞 课程设计 小球碰撞 课程设计 小球碰撞 课程设计 小球碰撞 课程设计 ...
文档是讲述的组合数学当中经典问题,组合数学中小球与盒子的问题。
注意: 我的程序用的是宽屏幕调试运行的,这样就导致了一个问题(汇编中画圆和分辨率的问题):在普通屏幕的显示器上运行,球是个“椭圆”。。 ----------------------------- ...
利用VC++6.0 MFC 模拟小球碰撞过程,可设置两个小球的速度
在窗口中显示一个小球,该球以45度角反弹直线运动,碰撞后依然45度运行
JavaScript在Canvas上画一个小球,随机位置并且让它随机运动