U362818 GSEP 6级样题 下楼梯

发布时间 2023-10-01 01:05:48作者: iamy

GSEP 6级样题 下楼梯

题目描述

顽皮的小明发现,下楼梯时每步可以走 1 个台阶、2 个台阶或 3 个台阶。现在一共有N个台阶,你能帮小明算算有多少种方案吗?

输入格式

输入一行,包含一个整数N。约定1 ≤ N ≤ 60。

输出格式

输出一行,包含一个整数C,表示方案数。

样例 #1

样例输入 #1

4

样例输出 #1

7

样例 #2

样例输入 #2

10

样例输出 #2

274

#include <iostream>
using namespace std;

// 此题迭代方式类似斐波那契

// f(n) = f(n - 1) + f(n - 2) + f(n - 3)

int main()
{
    uint64_t a = 1, b = 2, c = 4;
    int n; cin >> n;
    if (n <= 3) {
        if (n == 1) cout << 1;
        else if (n == 2) cout << 2;
        else if (n == 3) cout << 4;
    
    } else {
        uint64_t t = 0;
        for (int i = 4; i <= n; ++i) {
            t = a + b + c;
            a = b;
            b = c;
            c = t;
        }
        cout << t;
    }
}