#A. 【模板】矩阵快速幂

    Type: RemoteJudge 1000ms 256MiB

【模板】矩阵快速幂

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

题目背景

一个 m×nm \times n矩阵是一个由 mmnn 列元素排列成的矩形阵列。即形如

$$A = \begin{bmatrix} a_{1 1} & a_{1 2} & \cdots & a_{1 n} \\ a_{2 1} & a_{2 2} & \cdots & a_{2 n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m 1} & a_{m 2} & \cdots & a_{m n} \end{bmatrix} \text{.} $$

本题中认为矩阵中的元素 aija_{i j} 是整数。

两个大小分别为 m×nm \times nn×pn \times p 的矩阵 A,BA, B 相乘的结果为一个大小为 m×pm \times p 的矩阵。将结果矩阵记作 CC,则

$$c_{i j} = \sum_{k = 1}^{n} a_{i k} b_{k j} \text{,\qquad($1 \le i \le m$, $1 \le j \le p$).} $$

而如果 AA 的列数与 BB 的行数不相等,则无法进行乘法。

可以验证,矩阵乘法满足结合律,即 (AB)C=A(BC)(A B) C = A (B C)

一个大小为 n×nn \times n 的矩阵 AA 可以与自身进行乘法,得到的仍是大小为 n×nn \times n 的矩阵,记作 A2=A×AA^2 = A \times A。进一步地,还可以递归地定义任意高次方 Ak=A×Ak1A^k = A \times A^{k - 1},或称 $A^k = \underbrace{A \times A \times \cdots \times A}_{k \text{ 次}}$。

特殊地,定义 A0A^0 为单位矩阵 $I = \begin{bmatrix} 1 & 0 & \cdots & 0 \\ 0 & 1 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & 1 \end{bmatrix}$。

题目描述

给定 n×nn\times n 的矩阵 AA,求 AkA^k

输入格式

第一行两个整数 n,kn,k
接下来 nn 行,每行 nn 个整数,第 ii 行的第 jj 的数表示 Ai,jA_{i,j}

输出格式

输出 AkA^k

nn 行,每行 nn 个数,第 ii 行第 jj 个数表示 (Ak)i,j(A^k)_{i,j},每个元素对 109+710^9+7 取模。

2 1
1 1
1 1
1 1
1 1

提示

【数据范围】

对于 100%100\% 的数据,1n1001\le n \le 1000k10120 \le k \le 10^{12}Ai,j1000|A_{i,j}| \le 1000

ch11 - 矩阵快速幂

Not Claimed
Status
Done
Problem
8
Open Since
2024-1-20 12:00
Deadline
2024-3-3 23:59
Extension
2400 hour(s)