详细题解
2026-04-01 20:36:15
发布于:浙江
3阅读
0回复
0点赞
问题分析与解题思路
鸡兔同笼问题是经典的数学问题,可以通过多种方法解决:
方法一:数学公式法
设鸡有x只,兔有y只,根据题意可得:
x + y = n (头的总数)
2x + 4y = m (脚的总数)
通过解方程组可以得到:
x = (4n - m) / 2
y = n - x
方法二:穷举法
题目要求使用穷举法,所以我们需要遍历所有可能的鸡的数量,检查对应的脚的数量是否符合条件。
#include<iostream>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
// 穷举鸡的数量,从0到n
for (int x = 0; x <= n; x++) {
int y = n - x; // 兔的数量
if (2 * x + 4 * y == m) { // 检查脚的数量是否符合
cout << x << " " << y << endl;
return 0; // 找到解后直接退出
}
}
// 如果没有找到解(题目保证输入有解,所以这行可能不会执行)
cout << "无解" << endl;
return 0;
}
代码说明
变量名说明(均≤3字符)
变量名 含义解释
n 头的总数
m 脚的总数
x 鸡的数量
y 兔的数量
关键逻辑:
穷举范围:鸡的数量x从0到n,因为最多有n个头
计算兔的数量:y = n - x,因为头的总数是n
检查条件:鸡有2只脚,兔有4只脚,总脚数应该等于m
输出结果:找到符合条件的x和y后立即输出并退出程序
测试用例验证
输入#1:
35 94
输出:
23 12
验证:
23只鸡:23×2=46只脚
12只兔:12×4=48只脚
总脚数:46+48=94,符合输入
其他测试用例:
输入:
10 28
输出:
6 4
验证:
6×2 + 4×4 = 12 + 16 = 28
优化版本(数学公式法)
虽然题目要求穷举法,但数学公式法更高效,这里也提供作为参考:
#include<iostream>
using namespace std;
int main() {
int n, m;
cin >> n >> m;
int x = (4 * n - m) / 2; // 鸡的数量
int y = n - x; // 兔的数量
cout << x << " " << y << endl;
return 0;
}
公式推导:
由方程组:
x + y = n
2x + 4y = m
将第一个方程乘以4得:4x + 4y = 4n 减去第二个方程得:2x = 4n - m → x = (4n - m) / 2
这里空空如也




有帮助,赞一个