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

 

词条 百马百担
释义

什么是百马百担问题?

这是经典的"百马百担"问题:有一百匹马,驮一百担货,大马驮3担,中马驮2担,两只小马驮1担,问有大,中,小马各几匹?

原理简介

数学上有百马百担,有一百匹马,一百担货,大马驮三担,中马驮二担,两匹小马驮一担,问大中小马各多少匹?

试编程求此数学问题。(用C语言编程)

设r = [a/b]+1, 其中a为担总数, b为每马担数

则当[a/b] = a/b时, 有 r = a/b + 1, r> a/b

当[a/b] < a/b 时, 因为 0 < a/b - [a/b] < 1, 有 a/b < [a/b] + 1 = r, 即 r > a/b

综上: r > a/b

又:a/b * b = a, 则 必有 r * b > a

根据提设条件对于任意的大马个数x, 有 x*b <= a

因此 r不属于x存在的集合,不在取值范围之列。

用for循环列举,并用if语句判断符合题意的结果

详细内容

C 语言的"百马百担"实现代码:

#include <stdio.h>

void main()

{

int big,mid,small,sum=0;

for(big=0;big<33;big++)

for(small=0;small<100;small+=2)

for(mid=0;mid<50;mid++)

{

if(3*big+2*mid+small/2==100&&big+mid+small==100)

{

printf("big:%d\\tmid:%d\\tsmall:%d\",big,mid,small);

sum++;

}

}

printf("%d\",sum);

}

结果为大中小马:

2 30 68

5 25 70

8 20 72

11 15 74

14 10 76

17 5 78

20 0 80

随便看

 

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

 

Copyright © 2004-2023 Cnenc.net All Rights Reserved
更新时间:2025/4/1 23:44:30