7-2 兔子繁衍问题
分数 15
全屏浏览
切换布局
作者 徐镜春
单位 浙江大学
一对兔子,从出生后第3个月起每个月都生一对兔子。小兔子长到第3个月后每个月又生一对兔子。假如兔子都不死,请问第1个月出生的一对兔子,至少需要繁衍到第几个月时兔子总数才可以达到N对?
输入格式:
输入在一行中给出一个不超过10000的正整数N。
输出格式:
在一行中输出兔子总数达到N最少需要的月数。
输入样例:
30
输出样例:
9
1.分析
兔子过两个月后就可以生兔子了,即dp[i]=dp[i-1]+dp[i-2];就是当月的兔子数量等于上个月兔子的数量dp[i-1],加上本月新生的兔子的个数dp[i-2]。
2.代码
cpp
#include<iostream>
using namespace std;
const int MAX=11111;
int N,re,arr[MAX];
int main(){
cin>>N;
int sum=0;
arr[0]=1,arr[1]=1;
while(sum<N){
for(int i=0;i<=re;i++){
if(i>=2) arr[i]=arr[i-1]+arr[i-2]; //下标从0开始,判断2
sum=arr[i];
}
re++;
}
cout<<re<<endl;
return 0;
}