PAT乙级(Basic Level)练习题 母牛的故事

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

输入描述:
输入数据由多个测试实例组成,每个测试实例占一行,包括一个整数n(0<n<55),n的含义如题目中描述。

输出描述:

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

输入例子:

2
4
5

输出例子:

2
4
6

\color{blue}解题思路:
话不多说,典型的递推规律题,我们先计算几个结果:
注:(老母牛代表n ≥ 4)

老母牛 初生 2年 3年 总数
第1天 1 0 0 0 1
第2天 1 1 0 0 2
第3天 1 1 1 0 3
第4天 1 1 1 1 4
第5天 2 2 1 1 6
第6天 3 3 2 1 9

不难发现一个规律f(n) = f(n - 1) + f(n - 3)(当n ≥ 4)

\color{blue}代码实现:

#include <iostream>
using namespace std;

int main(int argc, const char * argv[]) {
    //建立一张表,用于f(n)各项值,需要使用long long类型,否则会产生溢出
    long long fTable[56] = {0, 1, 2, 3};
    //注意数组下标从0开始,而计算从1开始
    for (int i = 4; i < 56; ++i) {
        fTable[i] = fTable[i - 1] + fTable[i - 3];
    }
    int number = 0;
    //scanf返回值为正确输入数据的变量个数,当一个变量都没有成功获取数据时,此时返回-1
    while (scanf("%d", &number) != - 1) {
        printf("%lld\n", fTable[number]);
    }
    return 0;
}
发布了1005 篇原创文章 · 获赞 269 · 访问量 22万+

猜你喜欢

转载自blog.csdn.net/qq_41855420/article/details/104626984
今日推荐