酷代码 AI
菜单
服务商
DeepSeek字节豆包
更多选项

百鸡问题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]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]