解题思路:
- 设大马x匹, 中马y匹, 小马z匹
- 3x + 2y + z/2 = 100 ①
- x + y + z = 100; ②
- x >= 0; ③
- y >= 0; ④
- z >= 0; && z&1 == 0; ⑤ 此处z&1==0限制z必须是偶数,因为2匹小马才能驮一担
- 由①②可得:
- 3x + 2y = 100 -z/2; ⑥
- x + y = 100 -z; ⑦
- 可得:
- x = 1.5z - 100; ⑧
- y = 200 - 2.5z ⑨
- 把⑧⑨带入③④可得:
- 200/3 <= z <= 80; ⑩
- 又由⑤可得:
- 68 <= z <= 80 && z&1 == 0 ⑪
- 由⑧⑨⑪可写出如下代码:
代码:
#include <stdio.h>
#include <Windows.h>
int main()
{
int x = 0;
int y = 0;
int z = 0;
for (z = 68; z <= 80; z += 2){
x = (z >> 1) * 3 - 100;
y = 200 - (z >> 1) * 5;
printf("大马%2d匹,中马%2d匹,小马%2d匹\n\n", x, y, z);
}
system("pause");
return 0;
}