一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物

时间:2025-04-18 10:00:52
最近我们的c++老师在pta平台上为我们布置了这样一道题。
要求格式如下
输入格式:
第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数a (a < 32768)。
输出格式:
n行,每行输出对应一个输入。输出是两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用空格分开。如果没有满足要求的情况出现,则输出2个0。
输入样例:
在这里给出一组输入。例如:
2
3
20
输出样例:
在这里给出相应的输出。例如:
0 0
5 10
这是我编写的代码:
#include
using namespace std;
void cimulate(int data[20],int n)//计算最多与最少只的函数
{
int a,b,c,max,min;
for(int i=0;i<n;i++)
{
if(data[i]%2!=0)//首先排除掉错误的数据,因为鸡兔脚的总数必定可以被二整除
cout<<0<<" “<<0<<endl;
else if(data[i]%4==0)//这里判断特殊情况,即可以全为兔的情况,为最少只,全为鸡为最多只
{
cout<<data[i]/4<<” “<<data[i]/2<<endl;
}
else//这里判断普通情况,有鸡也有兔的情况
{
b=data[i]/4;//兔子个数
a=data[i]%4;
c=a/2;//鸡的个数
min=b+c;
max=2*b+c;
cout<<min<<” "<<max<<endl;
//其实这里else if中的判断条件可以与else 合并。else if中的判断条件只是一种特殊情况。
}
}
}
int main()
{
int number,data[20];
cout<<“请输入测试组数:”<<endl;
cin>>number;
for(int i=0;i<number;i++)
{
cin>>data[i];