HDU 2018 母牛的故事 递推

http://acm.hdu.edu.cn/showproblem.php?pid=2018

有一头母牛,它每年年初生一头小母牛。每头小母牛从第四个年头开始,每年年初也生一头小母牛。请编程实现在第n年的时候,共有多少头母牛?

Input

输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。
n=0表示输入数据的结束,不做处理。

Output

对于每个测试实例,输出在第n年的时候母牛的数量。
每个输出占一行。

Sample Input

2
4
5
0

Sample Output

2
4
6

思路:F[1]=1;F[2]=2;F[3]=3;从第四年开始,三年前生下的小母牛就变成母牛了,因此F[i]=F[i-1]+F[i-3]。

#include<iostream>
#include<cstdio>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;

ll f[60];

int main()
{
    f[1]=1;
    f[2]=2;
    f[3]=3;
    for(int i=4;i<=55;i++)
        f[i]=f[i-1]+f[i-3];//去年的母牛+三年前生下的小母牛
    int n;
    while(~scanf("%d",&n)&&n)
        printf("%lld\n",f[n]);
    return 0;
}

猜你喜欢

转载自blog.csdn.net/xiji333/article/details/86662721