Java 雞兔同籠問題

2021-09-19 06:31:44 字數 1036 閱讀 7085

雞兔同籠問題 已知頭的數目為50 腳的數目為120 求雞和兔子的數量

對於雞兔同籠的問題,如果採用最簡單粗暴的解法,就是兩層for迴圈巢狀,分別求出i和j的值,即雞和兔子的數量。

**如下:

for

(int i =

0; i <

60; i++)}

}

執行結果如下:

不過這樣窮舉浪費了計算機的資源。

因為雞兔同籠問題,只可能有乙個解,所以當某一刻輸出滿足要求的 i 和 j 時,之後的運算都是沒有意義的,是對資源的浪費。

於是,我增加了break,當 i 和 j 輸出後,就停止迴圈。

**如下:

for

(int i =

0; i <

60; i++)}

}

從數學上,還有一種解決方案:設雞的數量為x,則有2x + 4(50-x)=120,直接就可以算出x的數值,答案也就迎刃而解。

將這個問題一般化,即已知籠子裡頭的數目為m,腳的數目為n,求雞和兔子的數量,就有:

①2i + 4(m-i)=n,易得 i=(4m-n)/2;

②4j + 2(m-i)=n,易得 j = (n-2m)/2。

所以,**如下:

int m =50;

int n =

120;

int i =(4

*m-n)/2

; int j =

(n-2

*m)/2;

system.out.

println

("籠子裡有"

+i+"隻雞,"

+j+"只兔。"

結果與之前的一模一樣。

雞兔同籠問題

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

雞兔同籠問題

雞兔同籠,是中國古代著名典型趣題之一,記載於 孫子算經 之中。雞兔同籠問題,是小學奧數的常見題型。許多小學算術應用題和填空題都可以轉化成這類問題,或者用解它的典型解法 假設法 來求解。因此很有必要學會它的解法和思路。通常是假設法比較簡單易懂一點。雞兔同籠是中國古代的數學名題之一。大約在1500年前,...

雞兔同籠問題

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