RT,看了第一篇题解有了思路,但是不明白为什么初值要把a[0]也设为1,如果直接从第一级台阶a[1]=1开始结果就是错的...
以下是代码
#include<bits/stdc++.h>
#define mod 100003
using namespace std;
int a[100005], n, k;
int main()
{
cin >> n >> k;
a[0] = a[1] = 1;
for(int i = 2; i <= n; i++)
{
if(i <= k)
a[i] = a[i-1] * 2 % mod;
else
a[i] = (a[i-1] * 2 - a[i-1-k]) % mod;
}
int ans = (a[n] + mod) % mod;
cout << ans << '\n';
return 0;
}