PTA7-27 兔子繁衍问题 (15 分)

Posted on 2021-12-25 14:27  qnhnt  阅读(37)  评论(0编辑  收藏  举报  来源

一对兔子,从出生后第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);
}