atcoder#ARC084D. [ARC084F] XorShift

[ARC084F] XorShift

题目描述

黒板に、N N 個の非負整数が書かれています。i i 個目の非負整数は、Ai A_i です。

高橋君は、以下の 2 2 種類の操作を、好きな順番で何回でも行うことができます。

  • 黒板に書かれている整数を 1 1 つ選び、その整数の 2 2 倍の整数を新たに書き加える。選ばれた整数も、そのまま残しておく。
  • 黒板に書かれている相異なるとは限らない整数を 2 2 つ選び、その 2 2 整数の bitwise xor を新たに書き加える。選ばれた整数も、そのまま残しておく。

黒板に書かれうる整数のうち、X X 以下のものは何種類あるでしょうか。なお、最初に黒板に書かれていた整数も、黒板に書かれうる整数とみなします。 答えは非常に大きくなる可能性があるので、998244353 998244353 で割った余りを求めてください。

输入格式

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

N N X X A1 A_1 : : AN A_N

输出格式

黒板に書かれうる整数のうち、X X 以下のものの個数を 998244353 998244353 で割った余りを出力せよ。

题目大意

NN个数Ai...NA_{i...N}写在黑板上,现在有两种可以执行无限次的操作:

XX在黑板上时把2X2X也写在黑板上

XXYY都在黑板上时,把XxorYXxorY写在黑板上

求最终有多少个M≤M的数能被写在黑板上。

1N61≤N≤6, 0Ai...N240000≤A_{i...N}≤2^{4000}

感谢@psk011102 提供的翻译

3 111
1111
10111
10010
4
4 100100
1011
1110
110101
1010110
37
4 111001100101001
10111110
1001000110
100000101
11110000011
1843
1 111111111111111111111111111111111111111111111111111111111111111
1
466025955

提示

制約

  • 1  N  6 1\ \leq\ N\ \leq\ 6
  • 1  X < 24000 1\ \leq\ X\ <\ 2^{4000}
  • 1  Ai < 24000(1 i N) 1\ \leq\ A_i\ <\ 2^{4000}(1\leq\ i\leq\ N)
  • 入力は全て整数である
  • X,Ai(1 i N) X,A_i(1\leq\ i\leq\ N) 2 2 進表記で与えられ、先頭の桁は 1 1 である

Sample Explanation 1

最初、黒板には 15,23,18 15,23,18 が書かれています。7 7 以下の整数のうち、0,3,5,6 0,3,5,6 4 4 数を書くことができます。 例えば、6 6 は以下のような操作によって書くことができます。 - 15 15 2 2 倍し、30 30 を書く - 30 30 18 18 の xor をとり、12 12 を書く - 12 12 2 2 倍し、24 24 を書く - 30 30 24 24 の xor をとり、6 6 を書く

Sample Explanation 4

998244353 998244353 で割った余りを求めてください。