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 = 100100; const int mod = 100003; int dp[maxn]; int main () { int n,k; cin >> n >> k; dp[1] = 1; for(int i=2;i<=k;i++) { dp[i] = ( dp[i-1]*2 )%mod; } //cout<< dp[2]<<endl; for(int i=k+1;i<=n;i++) { for(int j=1;j<=k;j++) { dp[i] = (dp[i] +dp[i-j]) %mod; } } cout<< dp[n]<<endl; }