#abc271f. [abc271_f]XOR on Grid Path
[abc271_f]XOR on Grid Path
问题描述
有一个 行 列的方格网。我们用 表示从上往下数的第 行 、从左往右数的第 列 的方格。
方格 上有一个非负整数 。
当你在方格 时,你可以移动到方格 或者 。这里,你不能移出方格网。
找出从方格 到方格 的路径数量,使得所经过的方格上的整数(包括 和 )的异或和为 。
什么是异或和?两个整数 和 的异或和 定义如下。
- 在 的二进制表示中,对于 位(),如果 和 的二进制表示中只有一个是 ,那么该位为 ,否则为 。
例如,(二进制表示:)。
一般地, 个整数 的异或和定义为 $(\cdots ((p_1 \oplus p_2) \oplus p_3) \oplus \cdots \oplus p_k)$。我们可以证明它与 的顺序无关。
约束条件
- 输入中的所有值都是整数。
输入
输入使用以下格式从标准输入给出:
输出
输出答案。
示例输入 1
3
1 5 2
7 0 5
4 2 3
示例输出 1
2
满足条件的两条路径如下:
- $(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)$.
示例输入 2
2
1 2
2 1
示例输出 2
0
示例输入 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