天天看點

2750雞兔同籠問題

問題描述

一個籠子裡面關了雞和兔子(雞有2 隻腳,兔子有4 隻腳,沒有例外)。已經知道了籠

子裡面腳的總數a,問籠子裡面至少有多少隻動物,至多有多少隻動物

輸入資料

第1 行是測試資料的組數n,後面跟着n 行輸入。每組測試資料占1 行,包括一個正整

數a (a < 32768)。

輸出要求

n 行,每行輸出對應一個輸入。輸出是兩個正整數,第一個是最少的動物數,第二個是

最多的動物數,兩個正整數用空格分開。如果沒有滿足要求的情況出現,則輸出2 個0。

輸入樣例

2

3

20

輸出樣例

0 0//我覺得這個輸出不對,有3隻腳的話,至多會有1隻雞,我修改輸出為:0  1

5 10

解題思路

這個問題可以描述成任給一個整數 N,如果N 是奇數,輸出0 0,否則如果N 是4 的倍

數,輸出N / 4 N / 2,如果N 不是4 的倍數,輸出N/4+1 N/2。這是一個一般的計算題,

隻要實作相應的判斷和輸出代碼就可以了。題目中說明了輸入整數在一個比較小的範圍内,

是以隻需要考慮整數運算就可以了。 

#include<stdio.h>

void main()

{

 int n;//組數

 int i,j;

 int nCase[100];//測試量

 scanf("%d/n",&n);

 for(i=0;i<n;i++)

 {

  scanf("%d",&nCase[i]); //在第一次寫時,我用的是scanf("%d/n",&nCase[i]); 編譯通過,運作時有輸入沒輸出。

 }

 for(j=0;j<n;j++)

 {

  switch(nCase[j]%4){

  case 0: printf("%d  %d/n",nCase[j]/4,nCase[j]/2);break;

  case 1:

  case 2:

  case 3: printf("%d  %d/n",nCase[j]/(4+1),nCase[j]/2);break;

  default: printf("0  0/n");

  }

 }

}

參考答案為:

雞兔同籠

http://poj.grids.cn/problem/2750 

#include<iostream>

using namespace std;

int main()

{

int n;

cin>>n;

int a;

while(n--)

{

cin>>a;

if(a%2!=0)

cout<<0<<" "<<0<<endl;

else

{

if(a%4==0)

cout<<a/4<<" "<<a/2;

else

cout<<a/4+1<<" "<<a/2;

cout<<endl;

}

}

return 0;

}

說明:一道很水的題,有點類似A+B