思路:
模拟下就好了
解答:
package bupt;
import java.util.Arrays;
import java.util.Scanner;
/*
*@author:Totoro
*@createDate:2020年3月18日下午3:16:12
*/
public class 矩阵幂
{
static int[][] matrix_1,matrix_2;
static int n;
public static void main(String[] args)
{
Scanner cin=new Scanner(System.in);
int t=cin.nextInt();
int k;
while(t--!=0)
{
n=cin.nextInt();
k=cin.nextInt();
matrix_1=new int[n][n];
matrix_2=new int[n][n];
for(int i=0;i<n;++i)
for(int j=0;j<n;++j)
matrix_1[i][j]=cin.nextInt();
for(int i=0;i<n;++i)
matrix_2[i]=Arrays.copyOf(matrix_1[i],n);
go(k);
for(int i=0;i<n;++i)
{
System.out.print(matrix_1[i][0]);
for(int j=1;j<n;++j)
System.out.print(" "+matrix_1[i][j]);
System.out.println();
}
}
}
public static void go(int k)
{
if(k==1)
return;
int[][] matrix_3=new int[n][n];
for(int i=0;i<n;++i)
matrix_3[i]=Arrays.copyOf(matrix_1[i],n);
for(int i=0;i<n;++i)
{
for(int j=0;j<n;++j)
{
int num=0;
for(int o=0;o<n;++o)
num+=matrix_3[i][o]*matrix_2[o][j];
matrix_1[i][j]=num;
}
}
go(--k);
}
}