HDU 1575 - Tr A

Posted nicetomeetu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU 1575 - Tr A相关的知识,希望对你有一定的参考价值。

A为一个方阵,则Tr A表示A的迹(就是主对角线上各项的和),现要求Tr(A^k)%9973。

 

直接矩阵快速幂取模。

 

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 using namespace std;
 5 #define LL long long 
 6 const int mod=9973;
 7 struct P{
 8     int a[15][15];
 9 }c,s;    
10 int t,n;
11 LL k;
12 P mult(P a,P b)
13 {
14     P q;
15     for(int i=1;i<=n;i++)
16     {
17         for(int j=1;j<=n;j++)
18         {
19             q.a[i][j]=0;
20             for(int k=1;k<=n;k++)
21                 q.a[i][j]=(q.a[i][j]+a.a[i][k]*b.a[k][j] )%mod;
22         }
23     }
24     return q;
25 }
26 void fuc(int p)
27 {
28     memset(c.a,0,sizeof(c.a));
29     for(int i=1;i<=n;i++) c.a[i][i]=1;
30     while(p)
31     {
32         if(p&1)
33         {
34             c=mult(c,s);
35         }
36         s=mult(s,s);
37         p>>=1;
38     }
39 }
40 int main()
41 {
42     scanf("%d",&t);
43     while(t--)
44     {
45         scanf("%d%lld",&n,&k);
46         for(int i=1;i<=n;i++)
47             for(int j=1;j<=n;j++)
48                 scanf("%d",&s.a[i][j]);
49         fuc(k);
50         int ans=0;
51         for(int i=1;i<=n;i++) ans=(ans+c.a[i][i])%mod;
52         printf("%d\n",ans);
53     }
54 }

 

以上是关于HDU 1575 - Tr A的主要内容,如果未能解决你的问题,请参考以下文章

HDU 1575 - Tr A

hdu1575 Tr A---矩阵快速幂模板题

hdu1575 Tr A

HDU 1575 Tr A(矩阵快速幂)

HDU 1575 Tr A 矩阵经典2 矩阵快速幂入门

hdu 1575 Tr A 矩阵快速幂