列表

详情


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;
}

上一题