CF1716D Chip Move

题目描述

在数轴上有一个棋子。初始时,棋子位于点 $0$。你可以进行任意次数的移动;每次移动会使棋子的坐标增加某个正整数(称为这次移动的长度)。第一次移动的长度必须能被 $k$ 整除,第二次移动的长度必须能被 $k+1$ 整除,第三次移动的长度必须能被 $k+2$ 整除,依此类推。 例如,如果 $k=2$,则移动序列可能如下:$0 \rightarrow 4 \rightarrow 7 \rightarrow 19 \rightarrow 44$,因为 $4-0=4$ 能被 $2=k$ 整除,$7-4=3$ 能被 $3=k+1$ 整除,$19-7=12$ 能被 $4=k+2$ 整除,$44-19=25$ 能被 $5=k+3$ 整除。 给定两个正整数 $n$ 和 $k$。你的任务是,对于每个 $x \in [1, n]$,计算从 $0$ 出发到达点 $x$ 的方案数。方案数可能非常大,请对 $998244353$ 取模输出。若两种方案经过的位置集合不同,则认为它们是不同的方案。

输入格式

输入的第一行包含两个整数 $n$ 和 $k$($1 \le k \le n \le 2 \cdot 10^5$)。

输出格式

输出 $n$ 个整数,第 $i$ 个数表示从 $0$ 出发到达点 $i$ 的方案数,对 $998244353$ 取模。

说明/提示

我们来看第一个例子: 到达点 $1$ 的方案:$[0, 1]$; 到达点 $2$ 的方案:$[0, 2]$; 到达点 $3$ 的方案:$[0, 1, 3]$,$[0, 3]$; 到达点 $4$ 的方案:$[0, 2, 4]$,$[0, 4]$; 到达点 $5$ 的方案:$[0, 1, 5]$,$[0, 3, 5]$,$[0, 5]$; 到达点 $6$ 的方案:$[0, 1, 3, 6]$,$[0, 2, 6]$,$[0, 4, 6]$,$[0, 6]$; 到达点 $7$ 的方案:$[0, 2, 4, 7]$,$[0, 1, 7]$,$[0, 3, 7]$,$[0, 5, 7]$,$[0, 7]$; 到达点 $8$ 的方案:$[0, 3, 5, 8]$,$[0, 1, 5, 8]$,$[0, 2, 8]$,$[0, 4, 8]$,$[0, 6, 8]$,$[0, 8]$。 由 ChatGPT 4.1 翻译