atcoder#AGC034F. [AGC034F] RNG and XOR

[AGC034F] RNG and XOR

题目描述

すぬけくんはある乱数生成器を手に入れました。 この乱数生成器は、0 0 以上 2N1 2^N-1 以下の整数を生成します。 それぞれの整数を生成する確率は、整数列 A0,A1,,A2N1 A_0,A_1,\cdots,A_{2^N-1} によって表され、 整数 i i (0  i  2N1 0\ \leq\ i\ \leq\ 2^N-1 ) が生成される確率は Ai / S A_i\ /\ S です。 ただしここで S = i=02N1 Ai S\ =\ \sum_{i=0}^{2^N-1}\ A_i とします。 また、乱数生成は毎回独立に行われます。

すぬけくんは整数 X X を持っています。 今、X=0 X=0 です。 すぬけくんは、次の操作を好きなだけ行うことが出来ます。

  • 乱数生成器で一つの整数 v v を生成する。そして、X X X  v X\ \oplus\ v で置き換える。 ただしここで、 \oplus はビットごとの排他的論理和を表す。

それぞれの整数 i i (0  i  2N1 0\ \leq\ i\ \leq\ 2^N-1 ) について、X X i i にするために必要な操作の回数の期待値を求めてください。 ただし、期待値は mod 998244353 998244353 で出力してください。 より正確には、期待値が既約分数 P/Q P/Q で表されるとき、 $ R\ \times\ Q\ \equiv\ P\ \mod\ 998244353,\ 0\ \leq\ R\ <\ 998244353 $ を満たす整数 R R が一意に定まるので、その R R を出力してください。

なお、すべての i i について、X X i i にするために必要な操作の回数の期待値が有理数として存在し、 さらに mod 998244353 998244353 での整数表現が定義できることが問題の制約から証明できます。

输入格式

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

N N A0 A_0 A1 A_1 \cdots A2N1 A_{2^N-1}

输出格式

2N 2^N 行出力せよ。 i+1 i+1 行目 (0  i  2N1 0\ \leq\ i\ \leq\ 2^N-1 ) には、X X i i にするために必要な操作の回数の期待値を mod 998244353 998244353 で出力せよ。

题目大意

给定 nn 和一个长度为 2n2^n 的数组 AA (从 00 标号).

有一个初始为 00 的变量 xx . 不断操作, 每次操作以 Aij=02n1Aj\dfrac {A_i}{\sum_{j=0}^{2^n-1} A_j} 的概率将 xx 变成 xix\oplus i .

对于所有 i[0,2n)i\in[0,2^n), 求出 xx 第一次变成 ii 的期望操作次数.

n18,1A1000n\leqslant 18, 1\leqslant A\leqslant 1000

2
1 1 1 1
0
4
4
4
2
1 2 1 2
0
499122180
4
499122180
4
337 780 799 10 796 875 331 223 941 67 148 483 390 565 116 355
0
468683018
635850749
96019779
657074071
24757563
745107950
665159588
551278361
143136064
557841197
185790407
988018173
247117461
129098626
789682908

提示

制約

  • 1  N  18 1\ \leq\ N\ \leq\ 18
  • 1  Ai  1000 1\ \leq\ A_i\ \leq\ 1000
  • 入力される値はすべて整数である。

Sample Explanation 1

0 0 回操作をした段階で X=0 X=0 なので、X X 0 0 にするのに必要な操作回数の期待値は 0 0 です。 また、どの状態から操作しても、操作後の X X の値はそれぞれ 1/4 1/4 の確率で 0,1,2,3 0,1,2,3 になります。 よって、X X 1,2,3 1,2,3 にするのに必要な操作回数の期待値はいずれも 4 4 です。

Sample Explanation 2

X X 0,1,2,3 0,1,2,3 にするのに必要な操作回数の期待値は、それぞれ 0,7/2,4,7/2 0,7/2,4,7/2 です。