练习题 | 鸡兔同笼
题名 鸡兔同笼
问题描述
一个笼子里面关了鸡和兔子(鸡有2只脚,兔子有4只脚,没有例外)。已经知道了笼子里面脚的总数a,问笼子里面至少有多少只动物,至多有多少只动物。
输入格式
第1行是测试数据的组数n,后面跟着n行输入。每组测试数据占1行,每行一个正整数a (a < 32768)
输出
输出包含n行,每行对应一个输入,包含两个正整数,第一个是最少的动物数,第二个是最多的动物数,两个正整数用一个空格分开,如果没有满足要求的答案,则输出两个0。
样例输入
2
3
20
样例输出
0 0
5 10
思考
动物数最多——尽量为鸡,动物数最少——尽量为兔子;
分三种讨论:
脚总数能被4整除(暗含能被2整除)——最多为a/2只鸡,最少为a/4只兔子;
脚总数不能被4整除但能被2整除——最多为a/2只鸡,最少为a/4只兔子和1只鸡;
脚总数不能被2整除(为奇数)——输出0 0;
代码如下
1 import java.util.Scanner; 2 3 public class ChickenAndRabbit { 4 5 public static void main(String[] args) { 6 // TODO 自动生成的方法存根 7 //鸡兔同笼 8 Scanner scan = new Scanner(System.in); 9 int n = scan.nextInt(); 10 int Foots[]=new int[n]; 11 for (int i=0;i<n;i++){ 12 Foots[i]=scan.nextInt(); 13 } 14 scan.close();//按要求输入数据 15 16 int []max=new int[n]; 17 int []min=new int[n]; 18 for(int i=0;i<n;i++){ 19 if(Foots[i]%4==0){ 20 max[i]=Foots[i]/2; 21 min[i]=Foots[i]/4; 22 } 23 else if(Foots[i]%2==0){ 24 max[i]=Foots[i]/2; 25 min[i]=Foots[i]/4+1; 26 } 27 else{ 28 max[i]=0; 29 min[i]=0; 30 } 31 } 32 for(int i=0;i<n;i++){ 33 System.out.println(min[i]+" "+max[i]); 34 } 35 36 } 37 }