当前位置:编程学习 > C/C++ >>

九度教程第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++ ,
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,