题目描述
一个笼子里关了鸡和兔(鸡有2只脚,兔又4只脚,没有例外)。已知笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物?
输入
多组测试数据。第一行是测试数据的组数n,后面跟着n行输入。每组测试数据占一行,每行包含一个正整数a(a < 65535)。
输出
输出包含n行,每行对应一个输入,包含两个正整数,第一个是最少动物数,第二个是最多动物数,中间用一个空格分开。如果没有满足要求的答案,则输出两个0。
样例输入复制
2
3
20
样例输出复制
0 0
5 10
解决方法
思路1
法一:设置两个函数,分别求最大值和最小值
#include<bits/stdc++.h>
int MAX(int v)
{
int d,c;
c=v%2;
if(c==0)
d=v/2;
else
d=0;
return d;
}
int MIN(int x )
{
int e,f;
e=x%4;
if(e==0)
f=x/4;
else if(e!=0&&x%2==0)
f=x/2;
else
f=0;
return f;
}
int main()
{
int a,arr[100],b;
scanf("%d",&a);
for(int i=0;i<a;i++)
{
scanf("%d",&arr[i]);
printf("%d %d\n",MIN(arr[i]),MAX(arr[i]));
}
return 0;
}
思路2
法二:不设函数,直接循环加选择来运算
#include<stdio.h>//ZH
int main()
{
int n,m,min,max;
scanf("%d",&n);
for(int i= 0;i<n;i++)
{
scanf("%d",&m);
switch(m%4)
{
case 0:min=m/4;max=m/2;break;
case 2:min=m/4+1;max=m/2;break;
default:min=0;max=0;break;
}
printf("%d %d\n",min,max);
}
return 0;
}
文章描述了一个经典的数学问题——鸡兔同笼,给定脚的总数,求解至少和至多有多少只动物。提供两种C++解决方案,一种通过设置函数计算最小值和最大值,另一种直接在主程序中使用switch语句求解。
557





