一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?
输入格式:
输入在一行中给出一个不超过10000的正整数N。
输出格式:
在一行中输出兔子总数达到N最少需要的月数。
样例">输入样例:
30
结尾无空行
输出样例:
9
#include <stdio.h>
int main()
{
int i,n,x1,x2,x;
x1 = x2 = 1; /*一对兔子*/
i = 2; /*前面两个月都是1对兔子*/
scanf("%d",&n);
if(n == 1)
{
printf("%d",n);/*如果输入的的一对兔子的话,那么原样输出1即可*/
}
else
{
while(1) /*无限循环*/
{
i++; /*第三个月,所以要i+1*/
x = x1 +x2; /*总对数是x1+x2*/
x1 = x2; /*x1是x2*/
x2 = x; /*x2是x*/
if(n <= x) /*把生成的对数与输入的对数相比较*/
{
printf("%d",i); /*符合上述条件就输出生成相应对数所需要的最小月份*/
break; /*跳出循环*/
}
}
}
return 0;
}