代码
#include<stdio.h>
#include<string.h>
int a[100][100];
int c[100][100]= {0};
int d[100][100]= {0};
int n;
int b;
int m;
int main()
{
scanf ("%d %d %d",&n,&b,&m);
void nyuu(int n);
nyuu(n);
int i,j,p;
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
{
c[i][j]=a[i][j];
}
}
if (b==0)
{
for (i=0; i<n; i++)
for (j=0; j<n; j++)
{
if (i==j)
d[i][j]=1;
}
}
if (b==1)
{
for (i=0; i<n; i++)
{
int j;
for (j=0; j<n; j++)
{
printf ("%d ",a[i][j]%m);
}
printf("\n");
}
system("pause");
return 0;
}
if (b>1)
{
for(p=0; p<b-1; p++)
{
for (i=0; i<n; i++)
for (j=0; j<n; j++)
d[i][j]=0;
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
{
int k;
for (k=0; k<n; k++)
d[i][j]+=c[i][k]*a[k][j];
}
}
for (i=0; i<n; i++)
{
for (j=0; j<n; j++)
{
c[i][j]=d[i][j];
}
}
}
}
for (i=0; i<n; i++)
{
int j;
for (j=0; j<n; j++)
{
printf ("%d ",d[i][j]%m);
}
printf("\n");
}
system("pause");
return 0;
}
void nyuu(int n)
{
int i;
for (i=0; i<n; i++)
{
int j;
for (j=0; j<n; j++)
{
scanf ("%d",&a[i][j]);
}
}
}