7-1 兔子繁衍問題 ( 15 分 )
一對兔子,從出生后第3個月起每個月都生一對兔子。小兔子長到第3個月后每個月又生一對兔子。假如兔子都不死,請問第1個月出生的一對兔子,至少需要繁衍到第幾個月時兔子總數才可以達到N對?
輸入格式:
輸入在一行中給出一個不超過10000的正整數N。
輸出格式:
在一行中輸出兔子總數達到N最少需要的月數。
輸入樣例:
30
輸出樣例:
9
思路:不得不吐槽一下這個題,到底是第三個月起還是第三個月后生,還有到底數總數達到N還是兔子對數達到N,也是絕了。
正解就是:第三個月起開始生小兔子,然后是當兔子對數達到N,用斐波那契數列寫。
第一對兔子是處在第零個月,第一第二個月對數一直是一,第三個月才生了一對小兔子對數等於二,然后以斐波那契數列寫類推,
#include<iostream> using namespace std; int main() { int n; cin >> n; int a = 0, b = 1; if (n == 1){ cout << "1" << endl; return 0; } for (int i = 2;; i++) { int m = a + b; a = b; b = m; if (m >= n){ cout << i << endl; break; } } return 0; }