类型long long必不可少!!!矩阵乘法运算法则单位矩阵乘任意矩阵结果为任意矩阵本身(单位矩阵是对角线为1,其他位置为零的矩阵)memcpy(目标数组,被复制数组,sizeof(被复制数组)); #include<stdio.h> #include<string.h> const int p=1e9+7; long long n,k; long long mat[101][101],mat1[101][101],fin[101][101]={0},fin1[101][101]={0}; void pow(long long k) { int i,j,z; long long c; while(k) { if(k&1) { for(i=0;i<n;i++) for(j=0;j<n;j++) { c=0; for(z=0;z<n;z++) { c=(c+mat[i][z]*fin1[z][j]%p)%p; } fin[i][j]=c%p; } memcpy(fin1,fin,sizeof(fin)); } for(i=0;i<n;i++) for(j=0;j<n;j++) { c=0; for(z=0;z<n;z++) { c=(c+mat[i][z]*mat[z][j]%p)%p; } mat1[i][j]=c%p; } memcpy(mat,mat1,sizeof(mat1)); k>>=1; } } int main() { int i,j; scanf("%lld%lld",&n,&k); for(i=0;i<n;i++) fin1[i][i]=1; for(i=0;i<n;i++) for(j=0;j<n;j++) scanf("%d",&mat[i][j]); pow(k); for(i=0;i<n;i++) { for(j=0;j<n;j++) { printf("%d ",fin[i][j]%p); } printf("\n"); } return 0; }