atcoder#ABC230H. [ABC230H] Bullion

[ABC230H] Bullion

题目描述

クレーンゲームの大会で優勝した高橋君は金塊詰め放題の権利を得ました。
会場には $ w_1\ \lbrack\mathrm{kg}\rbrack,\ w_2\ \lbrack\mathrm{kg}\rbrack,\ \dots,\ w_K\ \lbrack\mathrm{kg}\rbrack $ の重さの金塊、および金塊を詰める 1 [kg] 1\ \lbrack\mathrm{kg}\rbrack の袋が無尽蔵にあります。

高橋君は 1 1 個の空でない袋を持ち帰ることができます。
袋には 0 0 個以上の空でない袋と 0 0 個以上の金塊を入れることができます。

耐荷重量 W [kg] W\ \lbrack\mathrm{kg}\rbrack のトラックを手配した高橋君は、 w = 2, 3, , W w\ =\ 2,\ 3,\ \dots,\ W について持ち帰る袋の総重量が w [kg] w\ \lbrack\mathrm{kg}\rbrack である詰め方としてあり得る状態の数が気になりました。
w = 2, 3, , W w\ =\ 2,\ 3,\ \dots,\ W について状態数を 998244353 998244353 で割ったあまりを求めてください。ただし、

  • 2 2 つの金塊が同じであるとは、金塊の重さが同じであることをいいます。
  • 2 2 つの袋が同じ状態であるとは、袋に入っている袋および金塊からなる多重集合が一致することをいいます。

输入格式

入力は以下の形式で標準入力から与えられる。

W W K K w1 w_1 w2 w_2 \dots wK w_K

输出格式

答えを W  1 W\ -\ 1 行出力せよ。
i i 行目には w = i + 1 w\ =\ i\ +\ 1 のときの答えを出力せよ。

题目大意

首先你得到了一个重量参数 WW

现在有 KK 种金块,每种金块的重量分别是 wiw_i,保证其各不相同。每种金块数量无限,同时还有无限个重量为 11,容积无限的袋子。

每个袋子中可以装大于 00 个金块和大于 00 个非空的袋子。注意袋子不能是空的。

你想知道,当一个袋子的重量恰好2,3,,W2,3,\dots,W 时,其中装金块的情况有多少种。对于每个答案输出一行,答案对 998244353998244353 取模。

注意,相同质量的金块之间没有差别,袋子之间也没有差别。

4 1
1
1
2
4
10 10
1 2 3 4 5 6 7 8 9 10
1
3
7
18
45
121
325
904
2546

提示

制約

  • 2  W  2.5 × 105 2\ \leq\ W\ \leq\ 2.5\ \times\ 10^5
  • 1  K  W 1\ \leq\ K\ \leq\ W
  • 1  wi  W 1\ \leq\ w_i\ \leq\ W (1  i  K) (1\ \leq\ i\ \leq\ K)
  • i  j  wi  wj i\ \neq\ j\ \to\ w_i\ \neq\ w_j (1  i,j  K) (1\ \leq\ i,j\ \leq\ K)
  • 入力はすべて整数である。

Sample Explanation 1

w = 2, 3, 4 w\ =\ 2,\ 3,\ 4 において袋の状態としてあり得るものを列挙したのが下の図になります。 (丸い線が袋を表しています。) ![image](https://img.atcoder.jp/ghi/5e1a4298e8b0992c767932915c7e93f4.png)