3682: 【C3】【递推】台阶问题
题目描述
有N级的台阶,你一开始在底部,每次可以向上迈最多K级台阶(最少1级),问到达第N级台阶有多少种不同方式。
输入
两个正整数N,K。(N≤100000,K≤100)
输出
一个正整数,为不同方式数,由于答案可能很大,你需要输出ans mod 100003后的结果。
样例输入
5 2
样例输出
8
C++:
#include<stdio.h>
int n,k,f[100005]={1};
int main() {
scanf("%d%d",&n,&k);
for(int i=1;i<=k;i++){
for(int j=1;j<=i;j++){
f[i]+=f[i-j];
f[i]%=100003;
}
}
for(int i=k+1;i<=n;i++){
for(int j=1;j<=k;j++){
f[i]+=f[i-j];
f[i]%=100003;
}
}
printf("%d",f[n]);
return 0;
}