atcoder#AGC034F. [AGC034F] RNG and XOR
[AGC034F] RNG and XOR
配点 : 点
問題文
すぬけくんはある乱数生成器を手に入れました。 この乱数生成器は、 以上 以下の整数を生成します。 それぞれの整数を生成する確率は、整数列 によって表され、 整数 () が生成される確率は です。 ただしここで とします。 また、乱数生成は毎回独立に行われます。
すぬけくんは整数 を持っています。 今、 です。 すぬけくんは、次の操作を好きなだけ行うことが出来ます。
- 乱数生成器で一つの整数 を生成する。そして、 を で置き換える。 ただしここで、 はビットごとの排他的論理和を表す。
それぞれの整数 () について、 を にするために必要な操作の回数の期待値を求めてください。 ただし、期待値は mod で出力してください。 より正確には、期待値が既約分数 で表されるとき、 $R \times Q \equiv P \mod 998244353,\ 0 \leq R < 998244353$ を満たす整数 が一意に定まるので、その を出力してください。
なお、すべての について、 を にするために必要な操作の回数の期待値が有理数として存在し、 さらに mod での整数表現が定義できることが問題の制約から証明できます。
制約
- 入力される値はすべて整数である。
入力
入力は以下の形式で標準入力から与えられる。
出力
行出力せよ。 行目 () には、 を にするために必要な操作の回数の期待値を mod で出力せよ。
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