有12个小球,其中只有一个与其他11个不一样重请问用天平如何称3次并找出这个球

有12个小球,其中只有一个与其他11个不一样重请问用天平如何称3次并找出这个球,第1张

第一步:12分3份,任两份放在天平上,两种可能:

(一)平衡,0在剩下的4个里

(二)不平,0在天平两边的8个里

第二步:

若是(一)把4分2份,仅拿其中一份即2个放上天平左边,在8个里任拿2个放天平另一边,两种可能:

(1)若平,剩下2个有一个是0,任取其中一个与一个称,即可找到0

(2)若不平,左边2个有一个是0,推理同上。

若是(二)比较麻烦,最好找支笔画图更容易理解

先给这8个标序号,左边是1234,右边5678。0有可能是12345678中任一个,还有假设左边重(假设任何一边重都对推出的结果没影响),

把678拿下来,把34和两个(除了标号的8个,有4个是)移到右边,把5和一个好球移到左边,这样两边都有四个,

原来:左1234,右5678

现在:左125,右34

出现两种可能:

(1)平,12345是,0在678中,任取其中两个放在天平两边称,

A、平衡则剩下的那个是0;

B、不平则是轻的是0,因为678原来都在天平右边,是轻的;1234都是,重的。

(2)不平,678是,0在12345中,也两种可能:

A、继续是左边重,移动过位置的345,0在12中,易推出0

B、变成是右边重了的话,没有移动过的12是,0在345中,

将34放天平两边,一目了然。

(A)如果平衡,5就是0,

(B)如果不平,重的那个是0(结合移动前后的变化,易推)

第三步都包含在以上分析中,所以称3次绝对可以找到0

好艰难,我在尽最大努力解析明白,希望大家都能看得懂。

若有更简单更快的方法,希望跟帖,共同讨论!

1 其实这就是一个搜索的算法

天平称小球问题有很多经典的范式解法,在这里我们谈论着只是其中最为广泛应用的一种——三进制编码解法。

为什么想起了使用三进制?其实很好理解。让我们考虑一下小球的状态,有:没放在天平上、在天平左盘、在天平右盘三种。我们不妨用一些数码来表示这三种状态:

0——没放在天平上

1——放在天平左盘

2——放在天平右盘

这样,我们就可以用一个数码串来表示某个小球被称量的过程,比如某个小球的编码是210120,就表明这个小球,第一次称量在右盘,第二次在左盘,第三次不在天平上,第四次在左盘,第五次在右盘,第六次不在天平上。很简单吧,仅仅用一个数码串就把小球复杂的称量过程表示出来了。

为了方便说明,下面都以“12小球称3次”来描述这个问题,不过,你很容易就能够推广到“M个小球称N次的情形”。好,闲言少叙,书归正传。

假设我们已经把12个小球编上不重复的3进制编码,称量的时候我们完全按照编码 *** 作,第0步,我们把12个小球上的编码第0位为1的放在天平左边,编码第 0位为2的放在天平的右边,编码第0位为0的则不放在天平上,记下称量结果;第1步,我们把12个小球上的编码第1位为1的放在天平左边,编码第1位为2 的放在天平的右边,编码第0位为1的不放在天平上,记下称量结果;如此下去,编码有N位,我们就称量N次,得到N组结果。

考察一下结果的状态:天平平衡、天平左边轻于右边、天平左边重于右边。咦?怎么也是3种。(hia hia,无巧不成书嘛,好戏还在后面)我们用0来表示天平平衡,用1天平左边轻于右边,用2天平左边重于右边;这样,称量了N次,我们就得到了一个N位的结果编码,它也是三进制编码。注意:这个编码有可能和某个小球的编码相同呢!:)

你似乎隐隐约约已经意识到了什么了吧。好,现在就把问题挑明:得到的结果编码,和非标准小球的编码一样,或者有直接的对应关系。(这个关系是什么?往下看)

如果我们确定了一组小球的称量方法(对应于12个小球的3进制编码),现在反过来考虑,原来某一步放天平左盘的小球现在放在天平右盘,原来放天平左盘的小球现在放在天平右盘,原来没放在天平上的小球应然不放在天平上。那么这样得到的小球编码(也是12个)和原来的重复吗?显然不重复,我们把由这种对应关系得到的编码叫做对偶码(这里下个定义:把编码中的每一位数码,1换成2,2换成1,0不变,得到新编码叫做原编码的对偶码。如22102的对偶码是 11201,或者说22101和11201互为对偶码)。这时候,你会考虑这样一个问题了——3位的3进制编码有多少个?答案是有3^3=27个(记做 3^N),比上面提到的24个编码还多3个。为什么要研究这个对称码?因为我们把A,B,C,D球放在左盘,把A’,B’,C’,D‘球放到右盘——与我们把A’,B’,C’,D‘球放在左盘,把A,B,C,D球放到右盘,其称量意义是一样的,得到结果是一样的,我们要避免这种重复 *** 作。所以说,实现这种算法,很重要的一点是选码——在互为一对对偶码的编码中选择一个来给小球编号。

到这里,我想你一定猜出来了——27比上面的24个编码多出的3个是什么码?他们是000,111,222。000和自身为对偶码,111和222互为对偶码。为什么要去掉他们3个?我想还是不放在这里说明了,要解决这个问题你得看看后面的数学证明先!

于是,我们得出结论:如果正确选择了一组3进制码,分别用来给小球编号,那么严格按照小球编码的称量过程得到的结果代码,必然是非标准球的代码,或者是他的对偶码。(由于我们给小球的编码中,任意两个小球的编码不互为对偶码,所以,我们的称量 *** 作唯一确定了非标准小球)此结论的证明方法过于繁复(我用 word打了4页),所以放在文后供打包下载。

下面说说程序实现编码的具体过程。

参考上图,我们首先取得用一个code数组来存放编码,为了节省空间,在我的程序里code数组存放的是十进制编码,我用 GetTheBallnum2Code()和GetTheBallcode2Num()来实现三进制和十进制之间的相互转换。我们首先把编码全部存入数组,然后去掉000,111,222这三个编码,然后再剩余的编码中再删掉一半,得到的12个编码标记给小球就行了。对于1开头的编码我们选择的是比 111大的所有编码,对于2开头的编码,我们划去“1开头我们选的那部分编码”的对偶码,对于0开头的编码,我们选择的是从左向右的编码位中,第一个不为 0的数码是1的编码(此处酷似好难理解,其实第一个不为0的数码不是1就是2,我们删掉了是2的那一半)。

好了,数数看,看好删了一半剩了一半。按照上图的编码方式,经过 *** 作得到的结果码,如果在小球编码中,那个编码的小球就是非标准球,且比标准球轻。如果结果码不在小球编码中,那么结果码是非标准球的对偶码,非标准球比标准球重。

把12个球编成1,212号,则可设计下面的称法:

左盘 右盘

第一次 1,5,6,12 2,3,7,11

第二次 2,4,6,10 1,3,8,12

第三次 3,4,5,11 1,2,9,10

每次都可能有平、左重、右重三种结果,搭配起来共有27种结果,但平、平、平的结果不会出现,因为总有一个球是不相等的。同样左、左、左,右、右、右的结果也不回出现,因为根据设计的称法,没有一个球是三次都在左边或右边的。剩下的24种结果就可以判断出哪种情况是哪一个球了。例如:如果结果是平、平、左或是平、平、右,就可判断出是9号球,因为第一次与第二次都没有9号球,唯独第三次有9号球,而第一次与第二次都是平的,只有第三次是失衡的,说明9号球的重量与其它的球不同。可依据此原理判断出其它的各种情况分别是哪个球。

最少一次。

分析:有9个球和一个天平,有一球稍轻,每边放4个球,还剩1个球,假设天平是平衡的,所以剩下的那个就是轻的,最少一次。

乘法:

①求几个几是多少;

②求一个数的几倍是多少;

③求物体面积、体积;

④求一个数的几分之几或百分之几是多少。

除法:

①把一个数平均分成若干份,求其中的一份;

②求一个数里有几个另一个数;

③已知一个数的几分之几或百分之几是多少求这个数;

④求一个数是另一个数的几倍。

先把小球分成A、B、C、D四组,每组三个球。 选择A组和B组称量一次,再选C组和D组称量一次,这样就可以选出一组和其他组重量不一样的,这时也知道了那个重量不一样的小球比别的小球是轻是重。 取出选出这一组的三个小球,分别标为E、F、G, 先选择E球和F球称量一下,如果重量一样,那么G球就是所求, 如果重量不一样,依据先前得知不一样的小球是轻是重,按称量结果选择E球或F球。 追问: 天平 没刻度 回答: 没有刻度不是应该知道天枰往那边偏吗? 追问: 哪边偏也不能知道那个球是轻是重啊 回答: 先把小球分成A、B、C、D四组,每组三个球。 选择A组和B组称量一次,如果相同就随便拿一个跟C称,如果也想同,那么D就是有问题的。如果A组和B组称量一次不同,那么随便拿一组与C称,就知道A组或者B组哪个有问题了,这样按照下面的方面就能得到结论。 追问: 像第一种情况,如果说D是有问题的,但是已经用了2次机会,但是D有3个球不知道轻重还是量不出来,我估计这个题目有问题,应该量不出来

从8个球中任意取2组3个球放在天平上称,

如果重量相等,那么重的球必然在余下的2个球中,故将那个2个球放在天平上称即可;

如果有一边重,那么重的球必然在这一边的3个球里,

再从这3个球中任意取2个出来称,

如果一样重,那么重的球就是余下的那个球,

如果一边更重,则便是这个球了

采用二分法来求出其中最多的球数。

因为已知“坏球”是较轻的,因此采用三分法效率最高。

即1到3球需1次;4到9球需2次;10到27球需3次。

则关系式有:

Y=3的X次方。

或表示成X=Log3底Y。

乘法的计算法则:

数位对齐,从右边起,依次用第二个因数每位上的数去乘第一个因数,乘到哪一位,得数的末尾就和第二个因数的哪一位对齐。

一个乘数互补,另一个乘数数字相同的速算技巧。

这类速算的计算口诀是这样的,一个头加1后,头乘头,尾乘尾。请看下面的例子。

2744=2+1=334=1274=282744=1228

方法几种。至少可以:

先每4个为一份,分三份,任意两份用天平称,若平衡,则轻球必在剩余那份;再将剩余4个分两份,轻的一边必有轻球,再将轻的一边的两球各自放到天平两边,就找出轻球了。若第一次称就不平衡,则轻球一定在轻的一边,再按照后续相同方法即可找出轻球。

还可先每6个为一份,轻的一份必有轻球,然后将轻的6个分两份,轻的三个中必有轻球,最后各放一个,若平衡,则轻球为没有称到的那个,若不平衡,轻的那边必定就是轻球。

以上就是关于有12个小球,其中只有一个与其他11个不一样重请问用天平如何称3次并找出这个球全部的内容,包括:有12个小球,其中只有一个与其他11个不一样重请问用天平如何称3次并找出这个球、c语言问题,麻烦解一下,用数学也可以。、清华难题,有12个球,外表相同,其中有一个球的质量不同于其他的,请问如何用天平三次把那个球找到等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/zz/10109551.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-05
下一篇2023-05-05

发表评论

登录后才能评论

评论列表(0条)

    保存