AT_waipc_qual_e.XOR and Shift

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

黑板上写有 MM 个长度为 2N2^N 的非负整数序列。第 ii 个(1≤i≤M1 \leq i \leq M)序列为 Ai=(Ai,1,Ai,2,…,Ai,2N)A_i = (A_{i,1},A_{i,2},\ldots,A_{i,2^N})。

你可以按任意顺序,任意次数地进行以下两种操作:

  • 任意选择黑板上的一个序列,将其左移一位,并将新得到的序列也写到黑板上。更准确地说,若选择序列 x=(x1,x2,…,x2N)x = (x_1,x_2,\ldots,x_{2^N}),则新写入的为 (x2,…,x2N,x1)(x_2,\ldots,x_{2^N},x_1)。
  • 任意选择黑板上的两个序列(可以相同),将它们各个位置分别按位异或,将新结果序列写到黑板上。更准确地说,若选择序列 x=(x1,…,x2N)x = (x_1,\ldots,x_{2^N}) 和 y=(y1,…,y2N)y = (y_1,\ldots,y_{2^N}),则新写入的为 (x1⊕y1,x2⊕y2,…,x2N⊕y2N)(x_1 \oplus y_1, x_2 \oplus y_2, \ldots, x_{2^N} \oplus y_{2^N})。

请注意,无论哪种操作,被选的序列都不会被消去。

请你计算,最终能在黑板上写出的不同序列种类有多少种,并输出其对 998244353998244353 取模的结果。

按位 XOR\mathrm{XOR} 运算指,对于非负整数 A,BA,B 的按位 XOR\mathrm{XOR},即 A⊕BA \oplus B,定义如下:

  • 表达 A⊕BA \oplus B 的二进制中,2k2^k(k≥0k \geq 0)位上的数字,只有当 A,BA,B 的该位中有且只有一个是 11 时,该位为 11,否则为 00。

例如,3⊕5=63 \oplus 5 = 6(二进制为 011⊕101=110011 \oplus 101 = 110)。
一般地,kk 个非负整数 p1,p2,...,pkp_1, p_2, ..., p_k 的按位 XOR\mathrm{XOR} 可定义为 (...((p1⊕p2)⊕p3)⊕...⊕pk)(...((p_1 \oplus p_2) \oplus p_3) \oplus ... \oplus p_k),且可以证明其结果与顺序无关。

输入格式

输入按如下格式从标准输入给出:

NN MM
A1,1A_{1,1} A1,2A_{1,2} …\ldots A1,2NA_{1,2^N}
A2,1A_{2,1} A2,2A_{2,2} …\ldots A2,2NA_{2,2^N}
⋮\vdots
AM,1A_{M,1} AM,2A_{M,2} …\ldots AM,2NA_{M,2^N}

输出格式

请输出答案。

输入输出样例

  • 输入#1

    1 1
    1 2

    输出#1

    4
  • 输入#2

    1 2
    1 1
    1 2

    输出#2

    8
  • 输入#3

    2 4
    12 4 11 15
    0 6 4 0
    8 5 4 8
    2 8 8 13

    输出#3

    32768
  • 输入#4

    4 5
    55 153 189 168 81 18 15 140 3 101 113 216 215 67 113 81
    42 47 89 86 51 230 108 163 251 112 246 238 160 176 37 169
    63 215 220 47 148 158 76 112 140 210 14 125 222 217 120 127
    159 238 73 195 112 141 239 109 175 82 191 20 95 46 6 165
    156 37 120 73 189 235 107 167 184 42 29 136 219 237 232 212

    输出#4

    8247623

说明/提示

样例解释 1

你可以通过如下步骤得到 44 种不同的序列:

  • 初始时,黑板上只有 (1,2)(1,2)。
  • 选择 (1,2)(1,2) 与自身异或,可以写出 (0,0)(0,0)。
  • 选择 (1,2)(1,2) 左移,可以写出 (2,1)(2,1)。
  • 选择 (1,2)(1,2) 与 (2,1)(2,1) 异或,可以写出 (3,3)(3,3)。

数据范围

  • 1≤N≤161 \leq N \leq 16
  • 1≤M≤81 \leq M \leq 8
  • 0≤Ai,j<2560 \leq A_{i,j} < 256
  • 输入均为整数。

由 ChatGPT 5 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页