百鸡问题C++解法:枚举与不定方程求解
## 📜 问题 “百鸡问题”出自中国古代数学著作《张丘建算经》,是经典的不定方程问题。题目要求用100文钱买100只鸡,其中公鸡5文一只、母鸡3文一只、小鸡1文三只。求公鸡、母鸡、小鸡各多少只。 ## 🧮 数学模型 设公鸡数量为 `x`、母鸡为 `y`、小鸡为 `z`,需满足: - 总数量:`x + y + z = 100` - 总价格:`5x + 3y + z/3 = 100`(因为小鸡1文三只,所以价格是 `z/3`) ## 💡 解题思路 将价格方程乘以3消去分母:`15x + 9y + z = 300` 用数量方程代入:`z = 100 - x - y`,得: `15x + 9y + (100 - x - y) = 300` 化简得:`14x + 8y = 200`,即 `7x + 4y = 100` 枚举 `x` 从0到100,满足 `y` 为整数且非负,同时 `z` 也为非负整数。 ## 📝 代码实现(C++) ```cpp #include <iostream> using namespace std; int main() { int x, y, z; for (x = 0; x <= 100; x++) { // 由 7x + 4y = 100 推导 y 的表达式 if ((100 - 7 * x) % 4 == 0) { y = (100 - 7 * x) / 4; z = 100 - x - y; if (y >= 0 && z >= 0 && (5*x + 3*y + z/3.0) == 100) { cout << "公鸡: " << x << " 只, 母鸡: " << y << " 只, 小鸡: " << z << " 只" << endl; } } } return 0; } ``` ## 🔍 运行结果示例 运行程序输出: ``` 公鸡: 0 只, 母鸡: 25 只, 小鸡: 75 只 公鸡: 4 只, 母鸡: 18 只, 小鸡: 78 只 公鸡: 8 只, 母鸡: 11 只, 小鸡: 81 只 公鸡: 12 只, 母鸡: 4 只, 小鸡: 84 只 ``` ## 📌 关键要点 - 需要利用整除性判断 `y` 是否为整数 - 注意 `z/3` 的浮点精度问题,可改用整数乘法验证价格 - 枚举范围可优化,`x` 只需从0到14(因为 `7x ≤ 100`) ######[AI问答 | 680点数解答 | 2026-08-23 19:00:57]
- Python枚举:找出满足特定条件的所有3位完全平方数(DeepSeek | 442点数解答 | 2025-03-07 18:52:14)200
- 枚举法找连续正整数乘积——C++高效实现(DeepSeek | 1160点数解答 | 2026-06-05 21:36:05)86
- 三位数回文质数枚举与优化实现(DeepSeek | 1386点数解答 | 2026-06-06 07:30:14)71
- C++实现小核桃与切割数字问题及开发建议(字节豆包 | 926点数解答 | 2026-07-04 07:50:12)52
- P1006 小核桃与切割数字:DFS求解不同求和结果(DeepSeek | 1351点数解答 | 2026-07-04 08:20:48)59
- C++实现连续整数乘积计算及开发建议(字节豆包 | 528点数解答 | 2026-08-22 20:21:03)4
- 浙闽“板凳龙”舞龙队 300 秒螺线盘入:位置与速度全揭秘(阿里通义 | 886点数解答 | 2024-09-07 10:31:31)740
- 浙闽“板凳龙”舞龙队 300 秒位置与速度数学模型揭秘(GPT | 565点数解答 | 2024-09-07 10:32:56)619
- 223节板凳龙沿等距螺线盘入:300秒内位置与速度的数学揭秘 (讯飞星火 | 443点数解答 | 2024-09-07 10:34:10)460
- 浙闽“板凳龙”300秒舞龙轨迹与速度:数学模型揭秘!(字节豆包 | 522点数解答 | 2024-09-07 10:35:06)420
- Excel 销售数据难题:2024 年 Q3 及特定时段销售情况计算全攻略(字节豆包 | 762点数解答 | 2024-11-06 19:11:51)256
- 从封闭到觉醒:中国在西方文化冲击下的曲折蜕变(讯飞星火 | 331点数解答 | 2024-11-30 21:50:57)276