P3390 矩陣快速冪 模板
阿新 • • 發佈:2021-11-11
矩陣意義上的快速冪
P3390 【模板】矩陣快速冪
只是模板而已。
但是沒注意到輸入都要開long long,還是WA+T了幾次。以後還是在不MLE的情況下全開long long,省的亂七八糟的事。
#include<iostream> #include<cstdio> #include<cstring> using namespace std; const int N=105; const int Mod=1000000007; int n; long long t; struct martix { long long fac[N][N]; martix() { memset(fac,0,sizeof(fac)); } void build() { for (int i=1; i<=n; i++) fac[i][i]=1; } } Ans,Base; martix operator *(const martix &A,const martix &B) { martix temp; for (int k=1; k<=n; k++) for (int i=1; i<=n; i++) for (int j=1; j<=n; j++) temp.fac[i][j]=(temp.fac[i][j]+A.fac[i][k]*B.fac[k][j]%Mod)%Mod; return temp; } int main() { ios::sync_with_stdio(false); cin>>n>>t; Ans.build(); for (int i=1; i<=n; i++) for (int j=1; j<=n; j++) cin>>Base.fac[i][j]; while (t>0) { if (t&1) Ans=Ans*Base; Base=Base*Base; t>>=1; } for (int i=1; i<=n; i++) { for (int j=1; j<=n; j++) cout<<Ans.fac[i][j]<<" "; cout<<endl; } }
本文來自部落格園,作者:Kinuhata,轉載請註明原文連結:https://www.cnblogs.com/KinuhataSaiai/p/15540946.html