版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}