~~实在懒得找错误~~,给你看看我的吧(可能有点慢,但AC了):
```
#include<bits/stdc++.h>
#define MAXN 100003
using namespace std;
typedef long long ll;
int n,k;
ll a[1000002];
int main()
{
cin>>n>>k;
a[1]=1;
for(int i=2;i<=k;i++)
{
for(int j=1;j<i;j++) a[i]=(a[j]+a[i])%MAXN;
a[i]++;
}
for(int i=k+1;i<=n;i++)
for(int j=i;j>=i-k;j--) a[i]=(a[j]+a[i])%MAXN;
cout<<a[n];
return 0;
}
```
思考过程式: _f(i)=f(i-1)+f(i-2)+……+f(n-k)_
再跟你一样利用余数可加性就行了。
by wangyuanzhuo @ 2023-12-09 20:54:59
递推式:c[i]=c[i]+c[i-j]
by q_w_qnoi @ 2023-12-12 19:52:44