k级台阶问题

给出台阶数n和能走的步数k(一次可以走1、2、3......k步),求到达n层有几种走法。。

#include<iostream>
#include<algorithm>
#include<cstring>
#include<string>
#include<cstdio>
#include<vector>
#include<stack>
#include<queue>
#define INF 0x3f3f3f3f
using namespace std;
int f[100100];

int main() {
    int n, k;
    cin>>n>>k;
    f[0] = 1;//第0层有1种走法
    for (int i = 1;i<=n;i++){
        for (int j = 1;j<=k&&(i-j)>=0;j++){
            f[i] += f[i - j];//f[i]值为走到第i层有几种方法,而第i+1层的方法数量是从f[i-k]到f[i]的值之和
            f[i] %= 100003;
        }
    }
    cout << f[n];
    return 0;
}