一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?
输入格式:
输入在一行中给出一个不超过10000的正整数N。
输出格式:
在一行中输出兔子总数达到N最少需要的月数。
输入样例:
30
输出样例:
9
1 #include <stdio.h> 2 3 int main(void) 4 { 5 int N; 6 int i; 7 int a = 1, b = 1; 8 9 scanf("%d", &N); 10 11 for ( i = 2; a < N && b < N; i++ ) { //兔子的只数恰好是一个Feibonacci数列 12 if ( i % 2 ) { 13 a = a + b; 14 } else { 15 b = b + a; 16 } 17 } 18 19 if ( N == 1 ) { 20 printf("1\n"); 21 } else { 22 printf("%d\n", i); 23 } 24 return 0; 25 }