NC219475. 数列递推
描述
由于答案可能过大,你只需要求出每个 对 取模后的结果。
输入描述
一行包含两个整数 。
输出描述
一行输出 个整数, 。
示例1
输入:
8 1
输出:
1 2 3 4 6 7 10 12
C++ 解法, 执行用时: 1140ms, 内存消耗: 249528K, 提交时间: 2021-05-22 14:19:15
#include<cstdio> #include<cmath> using namespace std; typedef long long ll; const int maxn=1e5+5; const int mod=998244353; int n; ll g[400][maxn],f[maxn]; int main(){ scanf("%d%lld",&n,&f[0]); int x=sqrt(n); for(int i=1;i<=x;++i)g[i][0]=f[0]; for(int i=1;i<=n;++i){ for(int j=1;j<=i;j=i/(i/j)+1){ if(i/j<=x) f[i]+=g[i/j][i%j]; else f[i]+=f[i%j]; f[i]%=mod; } for(int j=1;j<=x;++j) g[j][i]=((i-j>=0?g[j][i-j]:0)+f[i])%mod; } for(int i=1;i<=n;++i)printf("%lld ",f[i]); return 0; }