AT_wtf22_day2_d Cat Jumps

题目描述

[problemUrl]: https://atcoder.jp/contests/wtf22-day2-open/tasks/wtf22_day2_d 给定一个正整数序列 $A_1, A_2, \cdots, A_N$。定义 $S = N + \sum_{1 \leq i \leq N} A_i$。 猫 Snuke 拥有 $S$ 张卡片。每张卡片上写有一个整数,分别为 $A_1, A_2, \cdots, A_N, -1, \cdots, -1$。特别地,写有 $-1$ 的卡片共有 $\sum_{1 \leq i \leq N} A_i$ 张。 Snuke 现在位于数轴上坐标为 $0$ 的位置。接下来,它将进行 $S$ 次如下操作: - 设 Snuke 当前所在位置的坐标为 $x$。从持有的卡片中选择一张并丢弃。设丢弃的卡片上的数为 $v$,则跳跃到坐标为 $x + v$ 的位置。如果跳跃后的坐标为 $0$,则获得 $1$ 枚硬币。 对于每个 $k = 1, 2, \cdots, N$,求 Snuke 恰好获得 $k$ 枚硬币的跳跃序列有多少种,结果对 $998244353$ 取模。 注意计数的是跳跃序列。也就是说,如果两张卡片上的数相同,则丢弃它们的操作被视为相同的。

输入格式

输入通过标准输入给出,格式如下: > $N$ > $A_1$ $A_2$ $\cdots$ $A_N$

输出格式

输出 $N$ 行。第 $i$ 行输出 $k = i$ 时的答案。

说明/提示

### 约束条件 - $1 \leq N \leq 5000$ - $1 \leq A_i \leq 5000$ - 输入的所有值均为整数。 ### 样例解释 1 例如,跳跃序列 $(-1, +1, +1, -1)$ 是可能的。此时,Snuke 的坐标变化为 $0 \to -1 \to 0 \to 1 \to 0$,并获得 $2$ 枚硬币。以下是所有可能的跳跃序列及其对应的硬币数量: - $(-1, -1, +1, +1)$:$1$ 枚 - $(-1, +1, -1, +1)$:$2$ 枚 - $(-1, +1, +1, -1)$:$2$ 枚 - $(+1, -1, -1, +1)$:$2$ 枚 - $(+1, -1, +1, -1)$:$2$ 枚 - $(+1, +1, -1, -1)$:$1$ 枚 翻译由 DeepSeek V3 完成