一级
C++ 算法考级专栏
真题分析、矩阵探测、递归回溯与基础语法
🎨 视觉封面【GESP】C++一级练习BCQM3052,鸡兔同笼
📅 2024-10-12·✍️ OneCoder·计算中...·⏱️ 3 分钟
#GESP#C++
GESP一级知识点:for循环和if的应用。
BCQM3052
题目要求
描述
数学中经典的“鸡兔同笼”问题,已知头共x个,脚共y只,问笼中的鸡和兔各有多少只?
输入
头和脚的数量。
输出
鸡和兔各自数量。一个空格隔开。
输入样例
30 90
输出样例
15 15
题目分析
小学典型鸡兔同笼问题。这里最快速直观的方法当然是用解数学应用的题的思维,求出鸡和兔的数量,但我觉得这样就是纯数学式子,程序的思维太弱化了。因此我让孩子用穷举法进行了编程,即从1开始数到头数,判单每组情况是否满足题意(脚的情况),如果满足就是答案。
代码参考
CPP
#include <iostream>
using namespace std;
int main() {
int x, y; // 声明 x: 头数, y: 脚数
cin >> x >> y; // 输入总头数和总脚数
int chicken, rabbit;
// 穷举鸡的数量,从 0 一直尝试到 x
for (int i = 0; i <= x; i++) {
chicken = i; // 假设当前鸡的数量为 i
rabbit = x - chicken; // 那么兔子的数量就是总头数减去鸡的数量
// 检查头和脚的数量是否满足题意(鸡有 2 只脚,兔子有 4 只脚)
if (chicken + rabbit == x && chicken * 2 + rabbit * 4 == y) {
cout << chicken << " " << rabbit; // 输出符合条件的鸡和兔的数量
}
}
return 0;
}
附一个纯数学方法计算的代码
代码参考-数学方法
CPP
#include <iostream>
using namespace std;
int main() {
int x, y; // 声明 x: 头数, y: 脚数
cin >> x >> y; // 输入总头数和总脚数
int chicken, rabbit;
// 假设全部是兔子,那么有 x * 4 只脚
// 实际少出来的脚数 (x * 4 - y) 就是因为把鸡当成了兔子,每只鸡少 2 只脚
chicken = (x * 4 - y) / 2;
rabbit = x - chicken; // 兔子的数量为总头数减去鸡的数量
cout << chicken << " " << rabbit; // 输出鸡和兔的数量
return 0;
}
💡 OneCoder 资源指引
所有代码开源上传至 GitHub:yummy-code 仓库 · GESP 专题站:GESP WIKI
🤝 技术交流与答疑
欢迎加入:C++ GESP/CSP 考级答疑群(688906745) 与 Java/Python交流群(982860385),点击可直接加群。
📚
猜你想读 · 相关文章推荐
GESP 编程与算法 · 一级⏱️ 2 分钟
【GESP】C++一级练习BCQM3049,细胞分裂
GESP一级知识点整形int和for循环练习。
阅读全文 →
GESP 编程与算法 · 一级⏱️ 2 分钟
【GESP】C++一级练习BCQM3053,三位数数字交换
其实之前做两位数数字交换时(BCQM3036),我给孩子拓展的一道题,一模一样。 涉及GESP一级知识点:除法和取余运算。
阅读全文 →
GESP 编程与算法 · 一级⏱️ 8 分钟
【GESP】Windows系统配置官方要求Dev-C++和g++13.2.0编译环境
本系列用于记录与孩子共同成长学习GESP的过程和练习,希望能有所积累给我和孩子形成一份资产沉淀。
阅读全文 →
OneCoder (lihongzheshuai)
一个中年人的自留地,记录学习 C++、GESP/NOI、Java、Python 与算法架构的心得体会。本站唯一网址:coderli.com
💬 读者留言与交流
还没有留言,快来成为第一个讨论者吧!