#include<iostream>
#include<cstring>
using namespace std;
struct juzhen{
long long data[105][105];
int x,y;
}a;
int n;
long long k;
juzhen dw(int n)
{
juzhen ans;
memset(ans.data,0,sizeof(ans.data));
ans.x=n,ans.y=n;
for(int i=1;i<=n;i++) ans.data[i][i]=1;
return ans;
}
juzhen cheng(juzhen c,juzhen d)
{
juzhen ans;
ans.x=c.x,ans.y=d.y;
int k=c.y;
for(int i=1;i<=ans.x;i++) for(int j=1;j<=ans.y;j++)
{
ans.data[i][j]=0;
for(int l=1;l<=k;l++) ans.data[i][j]=(ans.data[i][j]+c.data[i][l]*d.data[l][j])%1000000007;
}
return ans;
}
juzhen lpow(juzhen c,int d)
{
juzhen ans=dw(c.x),a_=c;
while(d)
{
if(d&1) ans=cheng(ans,a_);
a_=cheng(a_,a_);
d/=2;
}
return ans;
}
int main()
{
cin>>n>>k;
a.x=n,a.y=n;
for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) cin>>a.data[i][j];
a=lpow(a,k);
for(int i=1;i<=a.x;i++)
{
for(int j=1;j<=a.y;j++) cout<<a.data[i][j]<<' ';
cout<<'\n';
}
return 0;
}
哪位大佬调一下谢谢