https://www.luogu.org/problem/show?pid=1192
登楼梯
肯定能想到 dp[i] = dp[i-1] + dp[i-2] + ...+ dp[i-k]
然后想到 两级台阶需要 dp[1] dp[2]
所以 三级台阶 需要 dp[1] dp[2] dp[3]
然后自己模拟了一下 大概 dp[i] = 2^(i-1)
所以 直接for 套 for 出来
#include<bits/stdc++.h>
using namespace std;
const int maxn = ;
const int mod = ; int dp[maxn]; int main ()
{
int n,k;
cin >> n >> k;
dp[] = ;
for(int i=;i<=k;i++)
{
dp[i] = ( dp[i-]* )%mod;
}
//cout<< dp[2]<<endl; for(int i=k+;i<=n;i++)
{
for(int j=;j<=k;j++)
{
dp[i] = (dp[i] +dp[i-j]) %mod;
}
}
cout<< dp[n]<<endl;
}