
cpp
#include<stdio.h>
//矩阵乘法
void cf(int a[20][20],int b[20][20],int result[20][20],int n){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
result[i][j]=0;
for(int k=0;k<n;k++){
result[i][j]+=a[i][k]*b[k][j];
}
}
}
}
void print(int a[20][20],int n){
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(j>0)
printf(" ");
printf("%d",a[i][j]);
}
printf("\n");
}
}
int main(){
int n,k;
while(scanf("%d %d",&n,&k)!=EOF){
int a[20][20];
int result[20][20];
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
scanf("%d",&a[i][j]);
}
}
//单位矩阵
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
if(i==j)
result[i][j]=1;
else
result[i][j]=0;
}
}
while(k--){
int temp[20][20];
cf(result,a,temp,n);
for(int i=0;i<n;i++){
for(int j=0;j<n;j++)
result[i][j]=temp[i][j];
}
}
print(result,n);
}
return 0;
}