洛谷-P1192 台阶问题
洛谷-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;
}