#CSP201512E. 矩阵
矩阵
时间限制: 1.0 秒
空间限制: 256 MB
问题描述
创造一个世界只需要定义一个初状态和状态转移规则。
宏观世界的物体运动规律始终跟物体当前的状态有关,也就是说只要知道物体足够多的状态信息,例如位置、速度等,我们就能知道物体之后任意时刻的状态。
现在小 M 创造了一个简化的世界。
这个世界中,时间是离散的,物理规律是线性的:世界的初始状态可以用一个 维向量 表示,状态的转移方式用 的矩阵 表示。
若已知这个世界当前的状态是 ,那么下一时刻就等于 左乘状态转移矩阵 ,即 。
这个世界中,物体的状态也是离散的,也就是说可以用整数表示。再进一步,整数都可以用二进制编码拆分为有限位 和 。因此,这里的矩阵 和向量 的每个元素都是 或 ,矩阵乘法中的加法运算视为异或运算(),乘法运算视为与运算()。
具体地,设矩阵 第 行第 列的元素为 ,向量 的第 个元素为 。那么乘法 所得的第 个元素为
$$(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 发现,这样的矩阵运算也有乘法结合律,例如有 。
为了保证自己创造的世界维度不轻易下降,小 M 保证了矩阵 可逆,也就是说存在一个矩阵 ,使得对任意向量 ,都有 。
小 M 想了解自己创造的世界是否合理,他希望知道这个世界在不同时刻的状态。
具体地,小 M 有 组询问,每组询问会给出一个非负整数 ,小 M 希望你帮他求出 。
输入格式
从标准输入读入数据。
输入第一行包含一个整数 ,表示矩阵和向量的规模。
接下来 行,每行包含一个长度为 的 串,表示矩阵 。
接下来一行,包含一个长度为 的 串,表示初始向量 。( 是列向量,这里表示它的转置)
注意: 串两个相邻的数字之间均没有空格。
接下来一行,包含一个正整数 ,表示询问的个数。
最后 行,每行包含一个非负整数 ,表示询问 。
注意: 可能为 ,此时是求 。
输出格式
输出到标准输出。
输出 行,每行包含一个 串,表示对应询问中 的结果。
注意: 串两个相邻的数字之间不要输出空格。
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
评测用例规模与约定
测试点编号 | |||
---|---|---|---|
1 | |||
2 | |||
3 | |||
4 | |||
5 | |||
6 | |||
7 | |||
8 | |||
9 | |||
10 |