某APP上认识的好友发过来的问题,题目具体出处不明
你被神秘人抓来被喂下了毒药。
现在房间里有十罐子的糖果,每罐子里的糖果数量为1000(或自己设定数量)。
其中一罐为解药糖果,每颗1.1克或0.9克,两者混合在同一个罐子里。其余9罐为毒药,毒药为1克。
(吃下毒药立马身亡,吃下解药存活。)
现在给你一把精确读数电子秤,三次机会找出解药的那罐。
对于这种类型问题我的初见反应就是每个罐子取不同的个数来确定差异,或者根据一些n进制编码,来去找到实际差异。
经过分析之后发现
- 解药1.1或0.9,n*(1.1+0.9)=n*(1+1)
这使得任意偶数个解药罐子中的取数无法确定的与毒药罐子的数量进行区分,因此对于取4个或者是取2个是对该问题没有任何影响的 - 第1次最多分出来5个
因为在前提没有任何信息的情况下,无论怎么分组都不可能,筛选出来多于5个的数量,其他的任意分组在最差的情况下,肯定都是多于5个
既然思路差不多有了,那么就开始。
对罐子先进行编码,好区分,分别是
编号 |
---|
A |
B |
C |
D |
E |
F |
G |
H |
I |
J |
因为分析过,对于最多分出来5个,且当数量增加2个及2个的倍数时,对结果没有影响,因此我们尝试A~E各取1个,F~J各取2个
我们对每次取出来的药丸都进行编码,例如从G取出来的两个,分别是G1和G2,没有顺序要求,只是为了记住这两个
编号 | 取出数量 |
---|---|
A | A1 |
B | B1 |
C | C1 |
D | D1 |
E | E1 |
F | F1,F2 |
G | G1,G2 |
H | H1,H2 |
I | I1,I2 |
J | J1,J2 |
此时进行分析,结果无外乎这几种
重量 | 原因 |
---|---|
15g | A~E必定为1g,F~J存在解药,且取出来1.1和0.9 |
14.8g | A~E必定为1g,F~J存在解药,且取出来0.9和0.9 |
15.2g | A~E必定为1g,F~J存在解药,且取出来1.1和1.1 |
14.9 | A~E必定存在解药且必定为0.9g |
15.1 | A~E必定存在解药且必定为1.1g |
其余的最简单的为15.2和14.8,且两种情况完全相同,下面只讲述15.2的情况,14.8同理可得
第一次称重结果:15.2g
取F1,G1,H1进行称重
结果为2种
重量 | 原因 |
---|---|
3g | 解药在 I 或者J 中,再随意称重一次即可 |
3.1g | 解药在F,G,H中 |
当3.1g时,对F,G,H进行再次判断
取F1,G1,G2进行称重
结果为
重量 | 原因 |
---|---|
3g | 解药为H |
3.1g | 解药为F |
3.2g | 解药为G |
14.8g与之同理,不过是把3.1换成了2.9,3.2换成了2.8而已
第一次称重结果:14.8g
为15.2g的相对情况
第一次称重结果:15g
取F1,G1,H1进行称重
结果为3种
重量 | 原因 |
---|---|
3g | 解药在 I 或者J 中,再随意称重一次即可 |
3.1g | 解药在F,G,H中,且F1,G1,H1中为存在1.1,F2,G2,H2中为存在0.9 |
2.9g | 解药在F,G,H中,为3.1g的相对情况 |
只进行分析3.1g的情况
取F1,G2进行称重
结果为3种
重量 | 原因 |
---|---|
2g | 解药为H |
2.1g | 解药为F |
1.9g | 解药为G |
当第2次称重为2.9g时,解药F或G的对应重量互换,解药为H时无影响
第一次称重结果:14.9g
从A~C中再各取1个,记为
A2,B2,C2
结果为有3种
重量 | 原因 |
---|---|
3g | 解药在 D 或者E 中,再随意称重一次即可 |
3.1g | 解药在A,B,C中 |
2.9g | 解药在A,B,C中,且 |
此时我们就能发现,现在的情况与上述的一些情况重合了
3.1g时,与15g的第2次称重情况一致了,即
A1,B1,C1中所含解药重量与
A2,B2,C2中所含解药重量不一致,对A1和B2进行称重即可
2.9g时与14.8g的第二次情况一致了,即
A1,B1,C1中所含解药重量与
A2,B2,C2中所含解药重量一致,对A1、B1、B2进行称重即可
第一次称重结果:15.1g
为14.9g的相对情况