NEUQACM OJ 1095 雞兔同籠

2021-08-09 10:20:09 字數 1135 閱讀 1461

題目如下

非常經典的一道入門題。

還記得小學是如何解這樣的題嗎?

沒錯!

列方程!!

設雞的只數為

x , 則兔的只數為 n−

x. 方程如下: 2x

+4(n

−x)=

m 則x

=4n−

m2問題在於 4n

−m可能為奇數,此時就要判斷 4n

−m是否為奇數,同時不要忘記 0≤

x≤n ;

這就涉及到乙個最基礎也是最暴力的演算法:

列舉列舉演算法又稱為窮盡演算法,它的基本思想是「有序地嘗試每一種可能」。

定義乙個變數

i ,

i取遍

1 到

n中的每乙個整數值,如果符合 2i

+4(n

−i)=

m ,就輸出

i (代表雞的隻數)和 n−

i(代表兔的隻數)

主要**如下:

...

int n,m;

while(cin>>n>>m&&n&&m)

//當n,m都非零時進入迴圈

{bool flag=false;

//判斷是否有解,預設false,代表無解;true代表有解

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

{if(2*i+4*(n-i)==m)

{flag=true;

//有解

cout

//如果無解,輸出「no answer"

{cout

<

通過這道題,相信大家一定對列舉演算法有了更深的認識。有時我們可以對列舉演算法進行優化,比如收緊列舉的條件。

此題可以先判斷 4n

−m的奇偶性,如果為奇數,直接輸出no answer

.

其實還有很多可以優化的地方正等著大家去發現。

64 雞兔同籠

時間限制 3000 ms 記憶體限制 65535 kb 難度 1 描述 已知雞和兔的總數量為n,總腿數為m。輸入n和m,依次輸出雞和兔的數目,如果無解,則輸出 no answer 不要引號 輸入第一行輸入乙個資料a,代表接下來共有幾組資料,在接下來的 a 10 a行裡,每行都有乙個n和m.0輸出 輸...

例題 雞兔同籠

問題描述 乙個籠子裡面關了雞和兔子 雞有2隻腳,兔子有4隻腳,沒有例外 已經知道了籠子裡腳的總數a,問籠子裡面至少有多少只動物,至多有多少只動物?輸入資料 第一行是測試資料的組數n,後面跟著n行輸入。每組測試資料佔一行,每行包含乙個正整數a a 32768 輸入要求 輸入包含n行,每行對應乙個輸入,...

acm雞兔同籠

描述 已知雞和兔的總數量為n,總腿數為m。輸入n和m,依次輸出雞和兔的數目,如果無解,則輸出 no answer 不要引號 輸入 第一行輸入乙個資料a,代表接下來共有幾組資料,在接下來的 a 10 a行裡,每行都有乙個n和m.0輸出 輸出雞兔的個數,或者no answer 樣例輸入 2 14 32 ...