luogu#P3890. [GDOI2014] 比特矩阵

[GDOI2014] 比特矩阵

题目背景

你知道矩阵乘法吗?

对于两个 n×nn\times n 的矩阵 A 和 B, 假设 ai,ja_{i, j} 表示位于矩阵 A 的第 ii 行第 jj 列的元素, 同样对于B可以定义类似的 bi,jb_{i,j}。 那么如果 C=A×BC = A \times B,则有 ci,j=k=1naik×bkjc_{i, j}=\sum_{k=1}^{n} a_{ik} \times b_{kj}。 其中 \sum 是序列求和符号,例如 i=1ni\sum_{i=1}^{n} i 表示 1+2++n1 + 2 + \cdots + n

题目描述

由于霍比特人的大热, L 的室友 X 最近热衷于研究它们所使用的货币。为了进行研究,X 需要了解一种叫比特矩阵的东西。 虽然比特矩阵也是矩阵,但是它的乘法和一般的矩阵有点不一样。

对于比特矩阵 C=A×BC = A \times B, 意味着 ci,j=Vk=1naikbkjc_{i,j} = V_{k=1}^{n}a_{ik} \bigoplus b_{kj}。其中 VV 是序列求按位或的符号,例如 Vi=1niV_{i=1}^{n} i 表示 12n1 \mid 2 \mid \cdots \mid n\mid 就是按位或的意思。 按位或是指从二进制的角度看两个数, 如果第 ii 位上两个数至少一个是1的话那结果的第 ii 位就是1, 否则第 ii 位就是 00\bigoplus 表示按位异或运算, 即如果两个二进制数的第ii位是不相同的话那么结果的第 ii 位就是 11,否则就是 00

举个比特矩阵相乘的例子:

$$\begin{bmatrix}1&6\\3&5\end{bmatrix}\times\begin{bmatrix}3&6\\5&7\end{bmatrix}=\begin{bmatrix}3&7\\0&7\end{bmatrix} $$

现在 X 想要拜托你帮他算 AmA^{m},其中 AA 是一个 n×nn\times n 的比特矩阵, 而 AmA^{m} 表示 mmA A 相乘的结果。严谨地说:

  • A1=AA^{1}=A
  • Am=Am1×A, m>1A^{m}=A^{m-1}\times A,\ m>1

输入格式

输入第一行包含两个正整数 n,mn,m

接下来 nn 行,每行包含 nn 个非负整数,这 nn 行中第 ii 行的第 jj 个数表示比特矩阵 ai,ja_{i,j} 的元素 。

输出格式

根据输入,输出一个比特矩阵 AmA^{m}。即按照输入给出 AA 的方式输出一个比特矩阵。 具体参看样例输出。

2 4
10 5
5 10

0 15
15 0

3 16
6 5 7
5 6 7
7 7 6

0 3 3
3 0 3
3 3 0

提示

数据范围及约定

  • 对于 10%10\% 的数据 n4n\le 4m10000 m\le 10000
  • 对于 30%30\% 的数据 n10n\le 10m109 m\le 10^9
  • 对于 100%100\% 的数据 n500n\le 500m109 m\le 10^9, 所有输入的整数不超过10910^9