《程序設計引導和在線實踐》例題2.1雞兔同籠問題

問題描述:html

一個籠子裏裏關了雞和兔子。已經知道了籠子裏的腳的總數,問籠子中至少有多少隻動物,至多有多少隻動物?ios

輸入數據測試

第一行是測試的數據組數n,後面跟着n行輸入,魅族測試數據佔一行,包括一個正整數a(a < 32768)spa

輸出要求code

n行, 每行對應一個輸入,輸出是兩個正整數,第一個是最少的動物書,第二是最大的動物數,兩個正整數用空格分開htm

若是沒有知足要求的的狀況出現,則輸出兩個0blog

輸入樣例io

2class

3stream

20

輸出樣例

0 0

5 10

以目前的‘智商’,恐怕又要暴力解決了!最少的動物確定是兔子爲主了,從零開始,每次加4直到二者(總腳數)之差小於4 若是差是2就再加一個動物 若是是0就結束

若是是奇數那麼就只好輸出0 0了

不過這樣的作法顯然是大費周章了。

書上是這樣分析這個問題的:

這個問題能夠描述成任給一個正整數N,若是N是奇數,輸出0 0,不然若是N是4的倍數,輸出N/4 N/2,若是N不是4的倍數,輸出N/4+1 N/2。這是一個通常性的計算題,

只要實現相應的判斷和輸出代碼就能夠了。題目中說明了輸入整數在一個較小的範圍以內,因此只須要考慮整數運算就能夠了。

代碼天然是簡單的- -

智商天然是捉急的- -

書上的解決方法顯然更加的具備‘大局觀’

 

//http://www.cnblogs.com/xdblog/p/5451306.html
#include<iostream>
#include<stdio.h>
int main()
{
    int nNumber;
    int nFeet;
    scanf("%d", &nNumber);
    for(int i = 0; i < nNumber; i++){
        scanf("%d", &nFeet);
        if(nFeet%2 != 0)          //若是出現奇數 輸出0 0
        {
            printf("0 0\n");
        }else if(nFeet%4 == 0){  //若是能被4整除
            printf("%d %d\n", nFeet/4, nFeet/2);
        }else{                      //不能被4整除  說明多出兩隻腳
            printf("%d %d\n", nFeet/4+1, nFeet/2);
        }

    }

    return 0;
}
相關文章
相關標籤/搜索