专栏文章
【模板】矩阵快速幂
算法·理论参与者 1已保存评论 0
文章操作
快速查看文章及其快照的属性,并进行相关操作。
- 当前评论
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @mip7pjry
- 此快照首次捕获于
- 2025/12/03 07:31 3 个月前
- 此快照最后确认于
- 2025/12/03 07:31 3 个月前
矩阵快速幂
CPP#include <bits/stdc++.h>
using namespace std;
const int P=1e9+7;
struct Matrix{
int R,C;
vector<vector<long long>> a;
Matrix()
{
R=C=0;
}
Matrix(int r,int c)
{
R=r,C=c;
a=vector<vector<long long>>(r,vector<long long>(c));
}
Matrix(vector<vector<long long>> v)
{
R=v.size();
C=v[0].size();
a=v;
}
void print()
{
for(auto v:a)
{
for(auto x:v)
{
cout <<(x+P)%P<<" ";
}
cout <<'\n';
}
}
};
Matrix operator * (const Matrix &A,const Matrix &B)
{
Matrix D(A.R , B.C);
for(int i=0;i<D.R;i++)
{
for(int j=0;j<D.C;j++)
{
for(int k=0;k<B.R;k++)
{
D.a[i][j]=(D.a[i][j] + A.a[i][k] * B.a[k][j])%P;
}
}
}
return D;
}
Matrix operator ^ (const Matrix &A,long long n)
{
Matrix X=A;
Matrix ans(A.R,A.C);
for(int i=0;i<A.R;i++) ans.a[i][i]=1;
while(n)
{
if(n&1) ans=ans*X;
X=X*X;
n>>=1;
}
return ans;
}
int main()
{
return 0;
}
相关推荐
评论
共 0 条评论,欢迎与作者交流。
正在加载评论...