AT_agc034_f [AGC034F] RNG and XOR
Description
[problemUrl]: https://atcoder.jp/contests/agc034/tasks/agc034_f
すぬけくんはある乱数生成器を手に入れました。 この乱数生成器は、$ 0 $ 以上 $ 2^N-1 $ 以下の整数を生成します。 それぞれの整数を生成する確率は、整数列 $ A_0,A_1,\cdots,A_{2^N-1} $ によって表され、 整数 $ i $ ($ 0\ \leq\ i\ \leq\ 2^N-1 $) が生成される確率は $ A_i\ /\ S $ です。 ただしここで $ S\ =\ \sum_{i=0}^{2^N-1}\ A_i $ とします。 また、乱数生成は毎回独立に行われます。
すぬけくんは整数 $ X $ を持っています。 今、$ X=0 $ です。 すぬけくんは、次の操作を好きなだけ行うことが出来ます。
- 乱数生成器で一つの整数 $ v $ を生成する。そして、$ X $ を $ X\ \oplus\ v $ で置き換える。 ただしここで、$ \oplus $ はビットごとの排他的論理和を表す。
それぞれの整数 $ i $ ($ 0\ \leq\ i\ \leq\ 2^N-1 $) について、$ X $ を $ i $ にするために必要な操作の回数の期待値を求めてください。 ただし、期待値は mod $ 998244353 $ で出力してください。 より正確には、期待値が既約分数 $ P/Q $ で表されるとき、 $ R\ \times\ Q\ \equiv\ P\ \mod\ 998244353,\ 0\ \leq\ R\
Input Format
N/A
Output Format
N/A
Explanation/Hint
### 制約
- $ 1\ \leq\ N\ \leq\ 18 $
- $ 1\ \leq\ A_i\ \leq\ 1000 $
- 入力される値はすべて整数である。
### Sample Explanation 1
$ 0 $ 回操作をした段階で $ X=0 $ なので、$ X $ を $ 0 $ にするのに必要な操作回数の期待値は $ 0 $ です。 また、どの状態から操作しても、操作後の $ X $ の値はそれぞれ $ 1/4 $ の確率で $ 0,1,2,3 $ になります。 よって、$ X $ を $ 1,2,3 $ にするのに必要な操作回数の期待値はいずれも $ 4 $ です。
### Sample Explanation 2
$ X $ を $ 0,1,2,3 $ にするのに必要な操作回数の期待値は、それぞれ $ 0,7/2,4,7/2 $ です。