一對兔子,從出生后第3個月起每個月都生一對兔子。小兔子長到第3個月后每個月又生一對兔子。假如兔子都不死,請問第1個月出生的一對兔子,至少需要繁衍到第幾個月時兔子總數才可以達到N對?
輸入格式:
輸入在一行中給出一個不超過10000的正整數N。
輸出格式:
在一行中輸出兔子總數達到N最少需要的月數。
輸入樣例:
30
輸出樣例:
9
網上經典解決方法:設當前第i個月,這個月的兔子總數,大致可以分為2部分,1部分是非新生的,另一部分是當月新生的。
非新生的應該是第i-1個月的兔子總數,新生的取決於第i-2個月的兔子總數。即兔子[i]=兔子[i-1]+兔子[i-2]。
於是,各個月的兔子數就形成了一個斐波那契數列:斐波那契數列指的是這樣一個數列:1, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144, ...。
#include<stdio.h> int main(void) { int N; scanf("%d",&N); if(N==1) printf("1");//如果總數為1則是第一個月 else { int i,count,x1=1,x2=1,sum=2,x=0; //x1為第一個月,x2為第二個月 for(i=2;x2<N;i++) { x=x1+x2; x1=x2; x2=x; } printf("%d",i); } return 0; }