求助,20分

P1192 台阶问题

~~实在懒得找错误~~,给你看看我的吧(可能有点慢,但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


|