https://www.luogu.org/problemnew/show/P1192
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <algorithm>
#include <queue>
#include <deque>
#include <stack>
#define INF 0x3f3f3f3
using namespace std;
typedef long long LL;
const int maxn=1e5+5;
const LL mod=100003;
int N,k;
LL dp[maxn],sum;
int main()
{
scanf("%d%d",&N,&k);
dp[1]=1;
sum=0;
for(int i=1;i<=k;i++)
{
dp[i]=1;
for(int j=1;j<i;j++)
dp[i]=(dp[i]+dp[j])%mod;
sum=(sum+dp[i])%mod;
}
for(int i=k+1;i<=N;i++)
{
dp[i]=(dp[i]+sum)%mod;
sum=((sum+dp[i]-dp[i-k])%mod+mod)%mod;//sum代表前k个状态的和
}
printf("%lld\n",dp[N]);
return 0;
}