//递推思想
#include<iostream>
#include<cstdio>
using namespace std;
int a[100005], n, k;
int main() {
cin >> n >> k;
a[0] = 1;
//对前 k 阶随便跳(1 到 k 步)
for (int i = 1;i <= k;i++) {
for (int j = 0;j < i;j++) {
a[i] += a[j];
}
a[i] %= 100003;
//提前取模不会影响结果,同时避免结果一不小心超出 int 范围就不好了
}
//最好根据简单情况找一下规律,结汇更好理解接下来的代码(本菜鸡也晕了好长时间~)
for (int i = k+1;i <= n;i++) {
for (int j = i - k;j < i;j++) {
a[i] += a[j];
}
a[i] %= 100003;
}
cout << a[n] << endl;
return 0;
}
懒懒的我从洛谷题解”盗“了规律,并不难理解:
(感谢 chenzijun 大佬!)