一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?
输入格式:
输入在一行中给出一个不超过10000的正整数N。
输出格式:
在一行中输出兔子总数达到N最少需要的月数。
输入样例:
30
结尾无空行
输出样例:
9
结尾无空行
其实就是Fibonacci数列问题,从第三月起的兔子数量等于前两项之和。
1, 1, 2, 3, 5, 8·····
一月,二月,三月,四月,五月,六月·····
就这样一一对应。
#include <stdio.h>
int main()
{
int tuzi,n,a=1,b=1;//tuzi就是兔子,n是输入的兔子数量;a和b初始为1,就是Fibonacci数列的前两项为1
int month=2;//第三月起,兔子长大就可以繁衍了,第三月就是2只兔子了
scanf("%d",&n);
if(n==1)//最小n的情况
{
month=1;
}
else
{
for(tuzi=1; tuzi<n; )
{
tuzi=a+b;
a=b;
b=tuzi;
month++;
}
}
printf("%d",month);
}