矩阵快速幂 模板

昨天上了线代第一节,突然想到kuangbin的矩阵系列可以开坑了

这是快速幂模板,思想跟快速幂一样,只不过是重载运算符*,使其变为矩阵乘法。

--

#include<bits/stdc++.h>
using namespace std;
const int mod=1e9+7;
struct matrix{
    long long c[101][101];
}a,e;
long long n,k;
matrix operator*(const matrix &x,const matrix &y)
{
    matrix a;
    for(int i=1;i<=n;i++)
     for(int j=1;j<=n;j++)
      a.c[i][j]=0;
      
      for(int i=1;i<=n;i++)
       for(int j=1;j<=n;j++)
        for(int k=1;k<=n;k++)
        {
            a.c[i][j]+=x.c[i][k]*y.c[k][j]%mod;
            a.c[i][j]%=mod;
        }
        return a;
}
int main()
{
   cin>>n>>k;
   for(int i=1;i<=n;i++)
    for(int j=1;j<=n;j++)
    {
        cin>>a.c[i][j];
    }
    
    for(int i=1;i<=n;i++) e.c[i][i]=1;
    
    while(k>0)
    {
        if(k%2==1) e=e*a;
        a=a*a;
        k>>=1;
    }    
    
    for(int i=1;i<=n;i++)
     {
         for(int j=1;j<=n;j++) cout<<e.c[i][j]<<" ";
         cout<<endl;
     }
} 

 

上一篇:101-对称二叉树


下一篇:大前端React-01:React粗介绍-React是什么?传统的使用JavaScript,DOM交互痛点?React的优点?React前置知识