真假硬币题目变种
有六个硬币,已知5个真币1个假币,假币与真币的质量稍稍不同,现有一标有精确刻度的电子秤,要求只称三次,分辨出哪个是假的以及真币和假币质量各为多少?
[解决办法]
老有问题呀;
a=f(x1+x2+x3);
b=f(x3+x4+x5);
if (a==b) //必为x3,x6之一
{
c=f(x1+x3+x6);
if (a==c)
{
//必为x3
}
else
{
//必为x6
}
}
else //必为x1,x2,x4,x5之一
{
c=f(x1+x4);
//若为x1;则有方程组{x+2y=a;3y=b;x+y=c}成立 ==> b==3(a-c) 成立
//若为x2;则有方程组{x+2y=a;3y=b;2y=c}成立 ==> b==3c/2 成立
//若为x4;则有方程组{3y=a;x+2y=b;x+y=c}成立 ==> a==3(b-c) 成立
//若为x5;则有方程组{3y=a;x+2y=b;2y=c}成立 ==> a==3c/2 成立
//因为有前提条件a!=b,可以证明此4个条件互斥的,有且只有一个成立
//比如:
//1).当 b==3(a-c)且a!b时
//b==3c/2==3(a-b/3)/2==(3a-b)/2 ==> 2b==3a-b ==> 3b==3a 矛盾
//a==3(b-c)=3(b-(a-b/3))==4b-3a ==> 4a==4b 矛盾
//a==3c/2==3(a-b/3)/2==(3a-b)/2 ==> 2a=3a-b ==> a==b 矛盾
}
to:oo(为了名副其实,努力学习oo技术ing)
你的方法有个地方没描述清楚
“如在A,B,E中:称BE得Wbe,如果Wbe/2 == Wcde则A是假币
如果Wbe/2 != Wcde (Wabcd+Wcde-Wbe)/5可得标准重量,然后计算出B,E重量然后判断
”
[解决办法]
谢谢lexchi() 改正,应该是delta=Wcde-3*M