7-27 兔子繁衍问题 (15 分)
一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?
输入格式:
输入在一行中给出一个不超过10000的正整数N。
输出格式:
在一行中输出兔子总数达到N最少需要的月数。
输入样例:
30
输出样例:
9
/* 列表说明关系
month 1 2 3 4 5 6 7
number 1 1 2 3 5 8 13
规律:第n个月的兔子数是n-2月+n-1月的兔子的和
*/
#include <stdio.h>
int main (){
int N,month=0,i,number=1;
scanf("%d",&N);
int count [2];
while(number < N){
month ++;
i = month%2;
if (month <= 2){
count [i]=number;
// printf("month = %d,number = %d\n",month,number);
continue;
}
number = count[0] + count[1];
// printf("month = %d,number = %d\n",month,number);
count[0] = count [1];
count[1] = number;
}
if (number==1) //月份最少为1
month ++;
printf("%d\n",month);
return 0;
}