有N级的台阶,你一开始在底部,每次可以向上迈最多K级台阶(最少1级),问到达第N级台阶有多少种不同方式。
两个正整数N,K。(N≤100000,K≤100)
一个正整数,为不同方式数,由于答案可能很大,你需要输出ans mod 100003后的结果。
5 2
8
C++:
- #include
- 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;
- }