2028 【例4.14】百钱买百鸡

本文通过C++程序解决经典的鸡兔同笼问题,利用三重循环遍历所有可能的数量组合,找出符合特定条件(即鸡兔总头数与腿数匹配)的解。
#include<bits/stdc++.h>
using namespace std;
int main()
{
	int i,x,y;
	for(i=0;i<=100/5;i++)
		for(x=0;x<=100/3;x++)
			for(y=0;y<=100*3;y++)
				if(5*i+3*x+y/3==100&&i+x+y==100&&y%3==0)
				cout<<i<<' '<<x<<' '<<y<<endl;
	return 0;
}
### 问题的 C++ 实现 #### 代码实现 以下是一个完整的 C++ 程序,用于解决经典的“”问题: ```cpp #include <iostream> using namespace std; int main() { int gongji, muji, xiaoji; // 定义变量分别表示公、母和小的数量 cout << setw(5) << "公" << setw(5) << "母" << setw(5) << "小" << endl; // 打印表头 for (gongji = 0; gongji <= 20; gongji++) { // 公最多可以购 20 只(因为每只公价值 5 文) for (muji = 0; muji <= 33; muji++) { // 母最多可以购 33 只(因为每只母价值 3 文) xiaoji = 100 - gongji - muji; // 小数量等于总数减去已购公和母的数量 if (xiaoji >= 0 && xiaoji % 3 == 0 && gongji * 5 + muji * 3 + xiaoji / 3 == 100) { // 判断条件:小数量非负且能被三整除,总价恰好为一文 cout << setw(5) << gongji << setw(5) << muji << setw(5) << xiaoji << endl; } } } return 0; } ``` --- #### 关键点解析 1. **循环范围的选择**: - 公的价格为 5 文,因此最多可购 \( \lfloor 100 / 5 \rfloor = 20 \) 只[^1]。 - 母的价格为 3 文,因此最多可购 \( \lfloor 100 / 3 \rfloor = 33 \) 只[^2]。 - 小的价格为 1/3 文,因此其数量应满足能够被 3 整除的约束条件。 2. **核心逻辑**: - 对于每一个可能的公和母组合,计算剩余的小数量,并验证是否满足总价格为 100 文以及总数量为 100 的条件[^3]。 3. **输出格式**: - 使用 `setw` 函数设置列宽,使输出整齐美观[^4]。 4. **边界条件**: - 当前算法已经考虑了所有合理的边界情况,如当某种类型的数量为零时仍然会正确运行。 --- #### 示运行结果 假设程序正常执行,则输出如下所示的结果集: ``` 公 0 25 75 4 18 78 8 11 81 12 4 84 ``` 以上是所有符合条件的解法集合。 --- ###
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值