百元卖百鸡问题

【问题】

已知公鸡5元一只、母鸡3元一只,小鸡一元三只,用100元钱买100只鸡,问公鸡,母鸡,小鸡各多少只?

【想法】

设公鸡、母鸡和小鸡的个数分别为x,y,z,则:

x + y + z = 100

5x + 3y + z/3 = 100

且 0 <=x <= 20   0<= y <= 33    0 <= z <= 100

 将百元百鸡问题转化为求方程组的解,可以用蛮力法依次求解,试探x,y,z的值使方程组成立

【算法实现】

可以设count表示解的个数,注意到小鸡一元三只,在判断总价是否满足方程时要先判断z是否是3的倍数。程序如下:

代码

#include<iostream>
void Chicken(){
	int x, y, z;
	int count = 0;
	for(x = 0; x <= 20; x++){
		for(y = 0; y <= 33; y++){
			z = 100 - x  - y;     //满足100只 
			if((z % 3 == 0) && (5 * x + 3 * y + z / 3 == 100)){    //满足总价100元 
				count++;                             //求解的个数加1 
				std::cout << "公鸡:" <<x<< "母鸡:" <<y<< "小鸡" <<z<<std::endl; 
			}
		}
	}
	if (count == 0)
		std::cout<< "问题无解" <<std::endl; 
} 

int main(){
	Chicken();
}

结果

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ac猫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值