hdu 1575 Tr A

sb题,不解释

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #define mod 9973
 5 #define ll long long
 6 using namespace std;
 7 int nn,k,t;
 8 struct rec{
 9     ll v[11][11];
10     rec(){memset(v,0,sizeof v);}
11 };
12 rec mul(rec a,rec b){
13     rec ans;
14     ll sum;
15     for(int k=0;k<nn;k++){
16        for(int i=0;i<nn;i++){
17           for(int j=0;j<nn;j++){
18               sum=a.v[i][k]*b.v[k][j]%mod;
19               ans.v[i][j]=(ans.v[i][j]+sum)%mod;
20           }
21        }
22     }
23     return ans;
24 }
25 rec pow(rec a,int n){
26     if(n==1) return a;
27     rec ans=pow(a,n/2);
28     ans=mul(ans,ans);
29     if(n&1) return mul(ans,a);
30     else return ans;
31 }
32 int gao(rec a){
33     int ret=0;
34     for(int i=0;i<nn;i++) ret=(ret+a.v[i][i])%mod;
35     return ret;
36 }
37 int main(){
38     scanf("%d",&t);
39     while(t--){
40         scanf("%d%d",&nn,&k);
41         rec a;
42         for(int i=0;i<nn;i++){
43             for(int j=0;j<nn;j++){
44                 scanf("%lld",&a.v[i][j]);
45             }
46         }
47         a=pow(a,k);
48         printf("%d
",gao(a));
49     }
50     return 0;
51 }
hdu1575
原文地址:https://www.cnblogs.com/wonderzy/p/3408895.html