题目:
一个笼子里面关了鸡和兔子(鸡有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;
}