当前位置: 代码迷 >> 综合 >> L1-03(3) 2004 鸡兔同笼 (10 分)
  详细解决方案

L1-03(3) 2004 鸡兔同笼 (10 分)

热度:28   发布时间:2023-12-01 11:04:39.0

题目:

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

输入格式:

第1 行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数a (a < 32768) 。

输出格式:

第1 行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,包括一个正整数a (a < 32768) 。

样例">输入样例:

2
3
20

输出样例:

0 0
5 10

解题思路:

对题目进行分析,可以得到以下几种情况:

(1)当脚总数a刚好可以整除4时,则说明最小的动物数为兔子的数量;

(2)当脚总数a刚好可以整除2时,则说明最大的动物数为鸡的数量;

(3)当脚总数a无法整除4时,则可能除了兔子外还有鸡,所以最小的动物数为兔子的数量加上鸡的数量;

(4)当上面三种情况都不满足时,则为0。

!!!为什么a无法整除2时,最大的动物数不是鸡的数量加上兔子的数量?显然整除2后的数就是最大的数,所以最大的动物数只能是整除2后得到的鸡的数量。

AC代码:

#include<bits/stdc++.h>
using namespace std;
int main(){int n,a;cin>>n;for(int i=0;i<n;i++){int min=0,max=0;cin>>a;if(a%4==0)//如果刚好可以整除4,则最小的动物数为兔子的数量min=a/4;else{//如果无法整除4,则可能除了兔子外还有鸡存在if((a-4*(a/4))%2==0)min=a/4+(a-4*(a/4))/2;else min=0;}if(a%2==0)//如果刚好可以整除2,则最大的动物数为鸡的数量max=a/2;cout<<min<<" "<<max<<endl;}return 0;
}