题目描述
有一只兔子,从出生后第3个月起每个月都生一只兔子,小兔子长到第三个月后每个月又生一只兔子,假如兔子都不死,问每个月的兔子总数为多少?
输入描述:
输入int型表示month
输出描述:
输出兔子总数int型
示例1
输入
9
输出
34
解题思路:
月份 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
兔子年龄 1月 | 1 | 1 | 1 | 2 | 3 | 5 | 8 | 13 | |
兔子年龄2月 | 1 | 1 | 1 | 2 | 3 | 5 | 8 | ||
兔子年龄3月以上 | 1 | 1 | 2 | 3 | 5 | 8 | 13 |
第九个月的兔子总数为:13+8+13=34
解题代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int month;
while(cin>>month)
{
if(month<=2)
cout<<1<<endl;
else if(month==3)
cout<<2<<endl;
//下面计算4月及以上月份的兔子数
else
{
int rabbit_age_1=1; //兔子年龄1月
int rabbit_age_2=0; //兔子年龄2月
int rabbit_age_over3=1; //兔子年龄3月以上
for(int i=4;i<=month;i++)
{
rabbit_age_over3+=rabbit_age_2;//再更新计算三月大兔子数
rabbit_age_2=rabbit_age_1; //先更新计算二月大兔子数
rabbit_age_1=rabbit_age_over3; //最后更新计算一月大兔子数=此时三月大兔子数
}
cout<<rabbit_age_1+rabbit_age_2+rabbit_age_over3<<endl;
}
}
return 0;
}