I - I Hate Xor Sum
Editorial
/


Time Limit: 4 sec / Memory Limit: 1024 MiB
配点 : 100 点
問題文
正整数 N,M が与えられます。
非負整数からなる長さ N の数列 A について、次を満たす非負整数 X_{i,j}\ (1\leq j\leq i\leq N) が一意に存在します。
- X_{i,1}=A_i\ (1\leq i\leq N)
- X_{i,j}=X_{i-1,j-1}\oplus X_{i,j-1}\ (2\leq j\leq i\leq N)
ただし \oplus はビットごとの排他的論理和を表します。 このとき \sum_{i=1}^{N}\sum_{j=1}^{i}X_{i,j} の値を A の スコア とします。
S=1,2,\dots,M のそれぞれに対し、非負整数からなる長さ N の数列で総和が S であるもの全てについてのスコアの総和を 998244353 で割ったあまりを求めてください。
制約
- 1\leq N\leq 10^{9}
- 1\leq M\leq 10^{5}
- 入力は全て整数
部分点
この問題には複数の部分点が設定されている。
- N \leq 3000, M = 1 を満たすデータセットに正解した場合 1 点が与えられる。
- N \leq 10^6, M = 1 を満たすデータセットに正解した場合追加で 1 点が与えられる。
入力
入力は以下の形式で標準入力から与えられる。
N\ M
出力
M 行にわたって出力せよ。i\ (1\leq i\leq M) 行目には S=i のときの答えを出力せよ。
入力例 1
4 1
出力例 1
18
例えば A=(0,1,0,0) のとき X_{i,j} は以下のようになりスコアは 5 です。
- X_{1,1}=0
- X_{2,1}=1,X_{2,2}=1
- X_{3,1}=0,X_{3,2}=1,X_{3,3}=0
- X_{4,1}=0,X_{4,2}=0,X_{4,3}=1,X_{4,4}=1
入力例 2
202515 1
出力例 2
631322682
998244353 で割ったあまりを出力してください。
入力例 3
1000000000 20
出力例 3
450736580 222005843 791558300 565944390 287066035 818826101 538663305 222889651 450257059 718428507 230132846 653810630 380943894 21756026 863202268 823515972 834078326 615162787 221193562 85328814