洛谷-P1192 台阶问题

洛谷-P1192 台阶问题

原题链接:https://www.luogu.com.cn/problem/P1192


题目描述

有N级的台阶,你一开始在底部,每次可以向上迈最多K级台阶(最少1级),问到达第N级台阶有多少种不同方式。

输入格式

两个正整数N,K。

输出格式

一个正整数,为不同方式数,由于答案可能很大,你需要输出\(ans \bmod 100003\)后的结果。

输入输出样例

输入 #1

5 2

输出 #1

8

说明/提示

对于20%的数据,有\(N ≤ 10, K ≤ 3\);

对于40%的数据,有\(N ≤ 1000\);

对于100%的数据,有\(N ≤ 100000,K ≤ 100\)

C++代码

#include <iostream>
using namespace std;

int n,k,a[100001];

int solve(int x) {
    if(x==n)
        return 1;
    if(a[x])
        return a[x];
    for(int i=1;i<=k&&x+i<=n;++i)
        a[x]+=solve(x+i);
    a[x]%=100003;
    return a[x];
}

int main() {
    cin>>n>>k;
    cout<<solve(0)<<endl;
    return 0;
}
posted @ 2020-05-29 12:10  yuzec  阅读(102)  评论(0编辑  收藏  举报