問題描述
一個籠子裡面關了雞和兔子(雞有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