[矩阵快速幂]

大概就是一个 n*n 的矩阵A 求 A^k 的矩阵。

按照快速幂的思想来写。

 1 void mult(ll a[][110],ll b[][110])
 2 {
 3     memset(tmp,0,sizeof(tmp));
 4     for(int i=1;i<=n;i++)
 5         for(int j=1;j<=n;j++)
 6             for(int k=1;k<=n;k++)
 7             {
 8                 tmp[i][j]+=(a[i][k]%mod)*(b[k][j]%mod);
 9                 tmp[i][j]%=mod;
10             }
11     for(int i=1;i<=n;i++)
12         for(int j=1;j<=n;j++)
13             a[i][j]=tmp[i][j]%mod;
14 }
 1 void pow(ll a[][110])
 2 {
 3     memset(res,0,sizeof(res));
 4     for(int i=1;i<=n;i++)
 5         res[i][i]=1;
 6     while(k)
 7     {
 8         if(k%2==1) mult(res,a);
 9         mult(a,a);
10         k>>=1;
11     }
12 }
原文地址:https://www.cnblogs.com/Kaike/p/11131801.html