模板:
#include<bits/stdc++.h>
using namespace std;
long long int mod=1e9+7;
int n;
struct asd 结构体貌似没太大用
{
long long int a[102][102];};
asd mul(asd x,asd y) x和y的矩阵相乘
{
asd ans;
memset(ans.a,0,sizeof(ans.a));
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
for(int k=0; k<n; k++)
ans.a[i][j]=(ans.a[i][j]+x.a[i][k]*y.a[k][j]%mod)%mod;
return ans;
}
asd quickmul(int g,asd x)
{
asd ans;
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
if(i==j)
ans.a[i][j]=1;
else
ans.a[i][j]=0;
while(g)
{
if(g&1)
ans=mul(ans,x);
x=mul(x,x);
g>>=1;
}
return ans;
}
int main()
{
int m;
scanf("%d%d",&n,&m);
asd x;
for(int i=0; i<n; i++)
for(int j=0; j<n; j++)
scanf("%lld",&x.a[i][j]);
x=quickmul(m,x);
for(int i=0; i<n; i++)
{
for(int j=0; j<n; j++)
{
if(j)
printf(" ");
printf("%lld",x.a[i][j]);
}
puts("");
}
return 0;
}