#aBC271F. [ABC271F] XOR on Grid Path

[ABC271F] XOR on Grid Path

AT_abc271_f [ABC271F] XOR on Grid Path

题目描述

有一个 NNNN 列的方格,从上往下第 ii 行、从左往右第 jj 列的格子记作 (i,j)(i, j)
每个格子 (i,j)(i, j) 上写有一个非负整数 ai,ja_{i, j}

你可以从格子 (i,j)(i, j) 移动到 (i+1,j)(i+1, j)(i,j+1)(i, j+1),但不能移出方格范围。

请计算,从 (1,1)(1, 1) 出发,通过若干次移动到达 (N,N)(N, N) 的所有路径中,经过的所有格子(包括 (1,1)(1, 1)(N,N)(N, N))上所写的整数的异或和为 00 的路径总数。

异或的定义如下:对于整数 a,ba, b,它们的异或 aba \oplus b 定义为:将 a,ba, b 用二进制表示后,每一位上如果只有一方为 11,则该位为 11,否则为 00

例如,35=63 \oplus 5 = 6(因为 011101=110011 \oplus 101 = 110)。
一般地,kk 个整数 p1,,pkp_1, \dots, p_k 的异或为 $(\cdots((p_1 \oplus p_2) \oplus p_3) \oplus \cdots \oplus p_k)$,并且可以证明其结果与顺序无关。

输入格式

输入通过标准输入给出,格式如下:

NN
a1,1 a1,2  a1,Na_{1, 1}\ a_{1, 2}\ \ldots\ a_{1, N}
\vdots
aN,1 aN,2  aN,Na_{N, 1}\ a_{N, 2}\ \ldots\ a_{N, N}

输出格式

请输出答案。

输入输出样例 #1

输入 #1

3
1 5 2
7 0 5
4 2 3

输出 #1

2

输入输出样例 #2

输入 #2

2
1 2
2 1

输出 #2

0

输入输出样例 #3

输入 #3

10
1 0 1 0 0 1 0 0 0 1
0 0 0 1 0 1 0 1 1 0
1 0 0 0 1 0 1 0 0 0
0 1 0 0 0 1 1 0 0 1
0 0 1 1 0 1 1 0 1 0
1 0 0 0 1 0 0 1 1 0
1 1 1 0 0 0 1 1 0 0
0 1 1 0 0 1 1 0 1 0
1 0 1 1 0 0 0 0 0 0
1 0 1 1 0 0 1 1 1 0

输出 #3

24307

说明/提示

数据范围

  • 2N202 \leq N \leq 20
  • 0ai,j<230 (1i,jN)0 \leq a_{i, j} < 2^{30}\ (1 \leq i, j \leq N)
  • 输入均为整数

样例解释 1

有以下两条路径满足条件:

  • $(1, 1) \rightarrow (1, 2) \rightarrow (1, 3) \rightarrow (2, 3) \rightarrow (3, 3)$
  • $(1, 1) \rightarrow (2, 1) \rightarrow (2, 2) \rightarrow (2, 3) \rightarrow (3, 3)$

由 ChatGPT 4.1 翻译