【PTA 7-10】兔子繁衍问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Xylon_/article/details/87921133

                               7-10 兔子繁衍问题 (15 分)

一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?

输入格式:

输入在一行中给出一个不超过10000的正整数N。

输出格式:

在一行中输出兔子总数达到N最少需要的月数。

输入样例:

30

输出样例:

9

这道题实质上是斐波那契数列

前n个月:

a[0]=1;

a[1]=1;

a[2]=a[1]+a[0]=2;

a[3]=a[2]+a[1]=3;

a[4]=a[3]+a[2]=5;

...

a[n]=a[n-1]+a[n-2];

代码:

#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define inf 0x3f3f3f3f
#define mem(a,b) memset(a,b,sizeof(a))

int main()
{
	int n,i;
	cin>>n;
	if(n==1)
		cout<<"1"<<endl;
	else
	{
		int x=0,x1=1,x2=1;    //当前兔子总数,未成年兔子数,成年兔子数
		for(i=2;x2<n;i++)
		{
			x=x1+x2;
			x1=x2;
			x2=x;
		}
		cout<<i<<endl;
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/Xylon_/article/details/87921133