#CSP201512E. 矩阵

    ID: 51 Type: Default 1000ms 256MiB Tried: 5 Accepted: 2 Difficulty: 8 Uploaded By: Tags>CSP线性代数矩阵乘法递推快速幂算法基础倍增数据结构位图/bitset

矩阵

时间限制: 1.0 秒

空间限制: 256 MB

问题描述

创造一个世界只需要定义一个初状态和状态转移规则。

宏观世界的物体运动规律始终跟物体当前的状态有关,也就是说只要知道物体足够多的状态信息,例如位置、速度等,我们就能知道物体之后任意时刻的状态。

现在小 M 创造了一个简化的世界。

这个世界中,时间是离散的,物理规律是线性的:世界的初始状态可以用一个 mm 维向量 b(0)b^{(0)} 表示,状态的转移方式用 m×mm \times m 的矩阵 AA 表示。

若已知这个世界当前的状态是 bb,那么下一时刻就等于 bb 左乘状态转移矩阵 AA,即 AbAb

这个世界中,物体的状态也是离散的,也就是说可以用整数表示。再进一步,整数都可以用二进制编码拆分为有限位 0011。因此,这里的矩阵 AA 和向量 bb 的每个元素都是 0011,矩阵乘法中的加法运算视为异或运算(xor\mathrm{xor}),乘法运算视为与运算(and\mathrm{and})。

具体地,设矩阵 AAii 行第 jj 列的元素为 ai,ja_{i, j},向量 bb 的第 ii 个元素为 bib_i。那么乘法 AbAb 所得的第 kk 个元素为

$$(a_{k,1}\text{ and }b_1)\text{ xor }(a_{k,2}\text{ and }b_2)\text{ xor } \cdots\text{ xor }(a_{k,m}\text{ and }b_m) $$

矩阵和矩阵的乘法也有类似的表达。

小 M 发现,这样的矩阵运算也有乘法结合律,例如有 A(Ab)=(AA)b=A2bA(Ab) = (AA)b = A^2b

为了保证自己创造的世界维度不轻易下降,小 M 保证了矩阵 AA 可逆,也就是说存在一个矩阵 A1A^{-1},使得对任意向量 dd,都有 A1Ad=dA^{-1}Ad=d

小 M 想了解自己创造的世界是否合理,他希望知道这个世界在不同时刻的状态。

具体地,小 M 有 nn 组询问,每组询问会给出一个非负整数 kk,小 M 希望你帮他求出 AkbA^kb

输入格式

从标准输入读入数据。

输入第一行包含一个整数 mm,表示矩阵和向量的规模。

接下来 mm 行,每行包含一个长度为 mm0101 串,表示矩阵 AA

接下来一行,包含一个长度为 mm0101 串,表示初始向量 b(0)b^{(0)}。(b(0)b^{(0)} 是列向量,这里表示它的转置)

注意:0101 串两个相邻的数字之间均没有空格。

接下来一行,包含一个正整数 nn,表示询问的个数。

最后 nn 行,每行包含一个非负整数 kk,表示询问 Akb(0)A^kb(0)

注意:kk 可能为 00,此时是求 A0b(0)=b(0)A^0b^{(0)} = b^{(0)}

输出格式

输出到标准输出。

输出 nn 行,每行包含一个 0101 串,表示对应询问中 Akb(0)A^kb^{(0)} 的结果。

注意:0101 串两个相邻的数字之间不要输出空格。

3
110
011
111
101
10
0
2
3
14
1
1325
6
124124
151
12312
101
010
111
101
110
010
100
101
001
100

评测用例规模与约定

本题使用 1010 个评测用例来测试你的程序。

对于评测用例 11m=10, n=100, k103m = 10,~n = 100,~k \le 10^3

对于评测用例 22m=10, n=100, k104m = 10,~n = 100,~k \le 10^4

对于评测用例 33m=30, n=100, k105m = 30,~n = 100,~k \le 10^5

对于评测用例 44m=180, n=100, k105m = 180,~n = 100,~k \le 10^5

对于评测用例 55m=10, n=100, k109m = 10,~n = 100,~k \le 10^9

对于评测用例 66m=30, n=100, k109m = 30,~n = 100,~k \le 10^9

对于评测用例 77m=180, n=100, k109m = 180,~n = 100,~k \le 10^9

对于评测用例 88m=600, n=100, k109m = 600,~n = 100,~k \le 10^9

对于评测用例 99m=800, n=100, k109m = 800,~n = 100,~k \le 10^9

对于评测用例 1010m=1000, n=100, k109m = 1000,~n = 100,~k \le 10^9