标签:分治法 都对 模板题 高效 偶数 text pre 不可 记录
链接:http://lx.lanqiao.cn/problem.page?gpid=T148
#include<iostream> #include<string.h> using namespace std; const int maxn=2; int n,m; struct Matrix{ int m[maxn][maxn]; Matrix(){ memset(m,0,sizeof(m)); } }; Matrix Multi(Matrix a,Matrix b){ Matrix res; for(int i=0;i<maxn;i++){ for(int j=0;j<maxn;j++){ for(int k=0;k<maxn;k++){ res.m[i][j] =(res.m[i][j]+a.m[i][k]*b.m[k][j])%m; } } } return res; } Matrix fastm(Matrix a,int n){ Matrix res; for(int i=0;i<maxn;i++){ res.m[i][i]=1; } while(n){ if(n&1){ res=Multi(res,a); } a=Multi(a,a); n>>=1; } return res; } int main(){ cin>>n>>m; //看了一下评测记录,单位矩阵对m取余 居然是 0 0 0 0 我傻了,看来得去补补线代了 if(n==0){ for(int i=0;i<maxn;i++){ for(int j=0;j<maxn;j++){ cout<<0<<" " ; } cout<<endl; } return 0; } Matrix a; for(int i=0;i<maxn;i++){ for(int j=0;j<maxn;j++){ cin>>a.m[i][j]; } } Matrix res=fastm(a,n); for(int i=0;i<maxn;i++){ for(int j=0;j<maxn;j++){ cout<<res.m[i][j]<<" "; } cout<<endl; } return 0; }
标签:分治法 都对 模板题 高效 偶数 text pre 不可 记录
原文地址:https://www.cnblogs.com/NoWhiteBut/p/12620964.html