任务描述
本关任务:解决鸡兔同笼的问题。
相关知识
鸡兔同笼问题
一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。
已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物?
问题分析
使用数学方法,我们能很快的得到结果:要求最多,那么鸡的数量要尽可能多;要求最少,则兔子的数量要尽可能多。
那如何转化为计算机程序呢?我们可以一步一步来。
首先要读取输入的脚的总数,我们可以声明一个int型的变量:
int a; //脚的总数
cin >> a; //读取输入
然后就可以根据a的取值来分情况讨论了。
如果输入的数据为奇数,则这个数据是错误的数据,那我们就输出一句数据错误的提示。
代码如下:
if(a % 2 == 1)
{
cout << "数据错误" << endl;
}
数据正确的情况下,我们可以进一步看看a是否是4的倍数,如果是的,则最多动物数量就是a / 2,最少是a / 4。
代码如下:
else if(a % 4 == 0)
{
cout << a / 2 << endl; //输出最多的数量
cout << a / 4 << endl; //输出最少的数量
}
如果不是4的倍数,那么除以4的余数只能是2,所以最多的动物数量仍为a / 2,而最少的动物数量是a / 4 + 1(即n只兔子和1只鸡,这里利用了整数除法的特点)。
代码如下:
else
{
cout << a / 2 << endl;
cout << a / 4 + 1 << endl;
}
将这几个代码片段组合起来,整个程序就完成了。
编程要求
请将上述的代码片段组合成一个完整程序,写在右侧编辑器的指定位置。
测试说明
平台会对你编写的代码进行测试:
测试输入:
5
预期输出:
数据错误
测试输入:
6
预期输出:
3
2
参考代码:
#include <iostream>
using namespace std;
int main()
{
/********** Begin **********/
int a; // 脚的总数
cin >> a; // 读取输入
if (a % 2 == 1) {
cout << "数据错误" << endl; // 如果是奇数,输出错误提示
} else if (a % 4 == 0) {
cout << a / 2 << endl; // 输出最多的数量
cout << a / 4 << endl; // 输出最少的数量
} else {
cout << a / 2 << endl; // 输出最多的数量
cout << a / 4 + 1 << endl; // 输出最少的数量
}
return 0;
//将关卡说明中的代码组合后放到此处
/********** End **********/
}