-
[1053] 一起来数兔子
- 时间限制: 1000 ms 内存限制: 65535 K
- 问题描述
-
有一只兔子,它每年生一头小兔。每头小兔从第四个年头开始,每年生一头小兔。请你计算第n年是共有多少只兔子(第一年是有一头兔子)
- 输入
-
输入多组测试数据,每组测试数据占一行,输入一个整数n(0<n<56)。 n=0是表示输入结束
- 输出
-
每组输出数据占一行,输出第在第n年的时候兔子的数量。
- 样例输入
-
2 4 5 0
- 样例输出
-
2 4 6
- 提示
-
无
- 来源
-
CSL
- 操作
-
斐波那契数列的变形。思路就是当前一年兔子的数量就是上一年兔子的总量加上出生的兔子(因为新生的兔子第四年可以生小兔,所以即为三年前兔子的数目)。
『 ————白的很干净很纯粹的代码小白分界线———— 』
#include"cstdio"
#include"cstring"
#include"iostream"
#include"algorithm"
using namespace std;
int num[60];
void initial()
{
num[1] = 1;
for(int i = 2;i <= 4;i++)
{
num[i] = num[i-1] + 1; //一直到第四年都只有最开始的兔子生小兔
}
for(int i = 5;i <= 56;i++)
{
num[i] = num[i-1] + num[i-3]; //4年以后为上一年加上三年前的兔子数量
}
}
int main()
{
initial();
int year;
while(scanf("%d",&year) != EOF && year)
{
printf("%d\n",num[year]);
}
return 0;
}