请输入您要查询的百科知识:

 

词条 德·梅齐里亚克的砝码问题
释义

问题

一位商人有一个40磅的砝码,由于跌落在地而碎成4块.后来,称得每块碎片的重量都是整磅数,而且可以用这4块来称从1至40磅之间的任意整数磅的重物.

问这4块砝码碎片各重多少?

答案

解题者

法国数学家G.B.德·梅齐里亚克(1581一1638)在他的著作中解答了这题. 为使两祛码A与B能称出最多种重量,必须是1磅和3磅,用它们能称出l、2、3、4磅的重物。如选第三块祛码C的重量为2x4+1二9磅,则用它们可称出l至C+4“9十4二”磅间的所有牲数磅重物。最后选第四块祛码D,使它重量为2又13十1=27磅,那么用这四块祛码能称出从1至27+13二40磅的重物.因此,这四块祛码的重量分别为1、3、9、27磅。

C语言解答

#include <stdio.h>

#include <stdlib.h>

int isCorrect(int a,int b,int c,int d,int val)

{

int x1,x2,x3,x4;

int flag;

flag=0;

for(x1=-1;x1<2;x1++)

{

for(x2=-1;x2<2;x2++)

{

for(x3=-1;x3<2;x3++)

{

for(x4=-1;x4<2;x4++)

{

if(val==a*x1+b*x2+c*x3+d*x4)

flag=1;

}

}

}

}

return flag;

}

int main()

{

int a,b,c,d;

int flag=1;

int val;

for(a=1;a<11;a++)

{

for(b=a;b<40;b++)

{

for(c=b;c<40;c++)

{

for(d=c;d<40;d++)

{

if(a+b+c+d==40)

{

flag=1;

for(val=1;val<41&&flag;val++)

{

flag=isCorrect(a,b,c,d,val);

flag=flag*flag;

}

if(flag)

{

printf("a=%d,b=%d,c=%d,d=%d",a,b,c,d);

}

}

}

}

}

}

return 0;

}

随便看

 

百科全书收录4421916条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/3/15 20:24:31