解题思路:
注意事项:本题主要考察线性代数的知识。注意一些特殊情况。
参考代码:
#include<stdio.h>
int juzheng[3][30][30];
int n;
int js(int i,int j,int a)
{
int k,b=0;
for(k=0;k<n;k++)
{
b+=juzheng[a][i][k]*juzheng[2][k][j];
}
return b;
}
void main()
{
int m,a,b=2,i,j,f;
scanf("%d%d",&n,&m);
a=m;
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
{scanf("%d",&juzheng[2][i][j]);}}
if(a==0){ //当m=0是要将矩阵转换为单位矩阵
for(i=0;i<n;i++)
{for(j=0;j<n;j++)
{if(i==j){juzheng[2][i][j]=1;}else{juzheng[2][i][j]=0;}}
}
}
while(a>1) //当m<0,进行运算
{
for(i=0;i<n;i++)
{
for(j=0;j<n;j++)
{
juzheng[a%2][i][j]=js(i,j,b);
}
}
b=a%2;
a--;
}
for(i=0;i<n;i++) //输出矩阵
{ f=1;
for(j=0;j<n;j++)
{ if(f==1){f--;}
else{printf(" ");}
printf("%d",juzheng[b][i][j]);
}
printf("\n");
}
}
0.0分
3 人评分