词条 | 百马百担 |
释义 | 什么是百马百担问题?这是经典的"百马百担"问题:有一百匹马,驮一百担货,大马驮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条中文百科知识,基本涵盖了大多数领域的百科知识,是一部内容开放、自由的电子版百科全书。