矩阵快速幂板子

Posted notnight

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了矩阵快速幂板子相关的知识,希望对你有一定的参考价值。

 1 struct Matrix
 2 {
 3     int a[3][3];
 4     Matrix()
 5     {
 6         memset(a,0,sizeof(a));
 7     }
 8     void init()
 9     {
10         for(int i=0;i<3;i++)
11             for(int j=0;j<3;j++)
12                 a[i][j]=(i==j);
13     }
14     Matrix operator * (const Matrix &B)const
15     {
16         Matrix C;
17         for(int i=0;i<3;i++)
18             for(int j=0;j<3;j++)
19                 for(int k=0;k<3;k++)
20                     C.a[i][j]=(C.a[i][j]+1LL*a[i][k]*B.a[k][j])%Mod;
21         return C;
22     }
23     Matrix operator ^ (const ll &p)const
24     {
25         Matrix A=(*this),res;
26         res.init();
27         ll t=p;
28         while(t)
29         {
30             if(t&1)res=res*A;
31             A=A*A;
32             t>>=1;
33         }
34         return res;
35     }
36 }M[8];

 

以上是关于矩阵快速幂板子的主要内容,如果未能解决你的问题,请参考以下文章

板子矩阵快速幂

HDU - 6030 矩阵快速幂 +多组输入快速幂板子

矩阵快速幂板子

矩阵快速幂板子

[板子]矩阵快速幂求解斐波那契

矩阵快速幂