练习题 | 鸡兔同笼

题名  鸡兔同笼

问题描述

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

 

 

posted @ 2017-10-15 22:07  INGRID23  阅读(515)  评论(0编辑  收藏  举报