九度教程第59题
C语言源码:
[cpp]
#include<stdio.h>
int main()
{
int t,a[10][10],i,j,l,n,k,tr,b[10][10],c[10][10];
while(scanf("%d",&t)!=EOF)
{
while(t--)
{
scanf("%d %d",&n,&k);
for(i=0;i<n;i++)
for(j=0;j<n;j++)
{
scanf("%d",&a[i][j]);
b[i][j]=i==j?1:0;
}
while(k)
{
if(k%2==1)
{
for(i=0;i<n;i++)
for(j=0;j<n;j++)
c[i][j]=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
for(l=0;l<n;l++)
c[i][j]+=a[i][l]*b[l][j];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
b[i][j]=c[i][j]%9973;
}
k=k/2;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
c[i][j]=0;
for(i=0;i<n;i++)
for(j=0;j<n;j++)
for(l=0;l<n;l++)
c[i][j]+=a[i][l]*a[l][j];
for(i=0;i<n;i++)
for(j=0;j<n;j++)
a[i][j]=c[i][j]%9973;
}
tr=0;
for(i=0;i<n;i++)
tr+=b[i][i];
printf("%d\n",tr%9973);
}
}
}
补充:软件开发 , C++ ,