百马百担问题,有100匹马,驮100担货,大马驮3担,中马驮2担,两匹小马驮1担,编程计算共有多少种驮法。

解题思路:

  • 设大马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;
}
  • 9
    点赞
  • 47
    收藏
    觉得还不错? 一键收藏
  • 4
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值