#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 101, mod = 1e9 + 7;
int n;
struct Node{
int a[N][N];
Node() {
memset(a, 0, sizeof a);
}
void build() {
for (int i = 1; i <= n; i ++ ) a[i][i] = 1;
}
}a;
Node operator *(const Node &x, const Node &y) {
Node z;
for (int k = 1; k <= n; k ++ )
for (int i = 1; i <= n; i ++ )
for (int j = 1; j <= n; j ++ )
z.a[i][j] = (z.a[i][j] + x.a[i][k] * y.a[k][j] % mod) % mod;
return z;
}
int k;
signed main(){
scanf("%lld%lld", &n, &k);
for (int i = 1; i <= n; i ++ )
for (int j = 1; j <= n; j ++ )
scanf("%lld", &a.a[i][j]);
Node ans;
ans.build();
while (k) {
if (k & 1) ans = ans * a;
a = a * a;
k >>= 1;
}
for (int i = 1; i <= n; putchar('\n'), i ++ )
for (int j = 1; j <= n; j ++ )
printf("%d ",ans.a[i][j]);
}
P3390 【模板】矩阵快速幂
最新推荐文章于 2024-04-14 20:16:28 发布