模板 n维矩阵的二分幂
来源:互联网 发布:sai软件无毒下载 编辑:程序博客网 时间:2024/06/06 02:56
今天一上午一下午就干了点这,就写了一个这样恶心的模板,,写出来我自己都不想看,,不过还好,可以用。。这个模板可以求n维矩阵的二分幂,主要适用于递推式求值的题目。。
代码:
#include <iostream>#include <cstdio>#include <string.h>using namespace std;typedef long long ll;const ll MAX=1000007;const int row=3;//矩阵的维数,根据题目要求改变ll aa[11][11],bb[11][11];//aa,bb存储矩阵ll cc[11][11];//结果矩阵ll dd[11][11];//单位矩阵ll mi;//多少次方class matrix{public:void input(ll f[11],ll num[11]);void initmatrix(ll p[11],ll q[11]);void matrixmi(int x);//矩阵幂void matrixfun(ll a[11][11],ll b[11][11]);//矩阵乘积};void matrix::input(ll f[11],ll num[11]){ //输入前几项for(int i=1;i<row;++i){ scanf("%lld",&f[i]);}//输入前几项对应的系数for(int i=1;i<=row;++i){ scanf("%lld",&num[i]);}//输入所求的n次方scanf("%lld",&mi);}//构造矩阵void matrix::initmatrix(ll ff[11],ll a[11]){ memset(aa,0,sizeof(aa)); memset(bb,0,sizeof(bb)); //构造单位矩阵 for(int i=1;i<=row;++i){ for(int j=1;j<=row;++j) dd[i][j]=0; dd[i][i]=1; } for(int i=1;i<row;++i) aa[1][i]=ff[i]; aa[1][row]=a[row];//原矩阵 for(int i=1;i<=row-2;++i) bb[i+1][i]=1; bb[row][row]=1;bb[row][row-1]=1; for(int i=1;i<row;++i) bb[i][row-1]=a[i];//构造所要乘的矩阵}//矩阵乘法void matrix::matrixfun(ll a[11][11],ll b[11][11]){ long long sum=0; memset(cc,0,sizeof(cc)); for(int i=1;i<=row;++i){ for(int j=1;j<=row;++j){ sum=0;for(int k=1;k<=row;++k)sum+=(a[i][k]*b[k][j]);cc[i][j]=(sum%MAX); } }}//矩阵二分幂void matrix::matrixmi(int x){while(x){if(x&1){ matrixfun(dd,bb); for(int i=1;i<=row;++i) for(int j=1;j<=row;++j) dd[i][j]=cc[i][j];}matrixfun(bb,bb);for(int i=1;i<=row;++i)for(int j=1;j<=row;++j)bb[i][j]=cc[i][j];x=x>>1;}matrixfun(aa,dd);}int main(){ int numcase; scanf("%d",&numcase); while(numcase--){ matrix mm;ll f[11],num[11];mm.input(f,num);if(mi<row){ cc[1][row-1]=f[mi]%MAX;}else{ mm.initmatrix(f,num); mm.matrixmi(mi-2);}if(cc[1][row-1]>0)printf("%lld\n",cc[1][row-1]);elseprintf("%lld\n",cc[1][row-1]+MAX); } return 0;}
- 模板 n维矩阵的二分幂
- POJ3233 矩阵的N次幂求和 二分
- 矩阵快速二分求n次幂
- n行n列矩阵快速幂模板
- 斐波那契数列的第N项(矩阵快速幂模板)
- 矩阵二分幂模板HDU5171GTY's birthday gift
- hdoj 1588 矩阵快速幂 二分等比数列求和模板
- 矩阵的快速幂模板
- 求矩阵的n次方 快速幂
- 51nod 1113 矩阵快速幂 (矩阵的n次方)
- poj 3613 Cow Relays(经过N条边的最短路,floyd + 二分矩阵)
- 快速矩阵二分幂
- 矩阵二分快速幂
- M*N的矩阵
- 有关矩阵的模板【模板】
- POJ 1469 COURSES(二分图最大匹配) (矩阵和邻接表的模板题)
- 矩阵快速幂和矩阵的乘法模板
- 【POJ 3233】矩阵快速幂+二分求等比数列前N项和
- Windows系统环境变量大全
- Java英文面试题(核心知识篇)
- Sql Server临时表
- POJ-2195 最小费用最大流模板题
- Access打开出现正在准备安装,正在配置报错的解决办法
- 模板 n维矩阵的二分幂
- Insight into eDir-CMS (Composed by Wing and EA) - 2
- Struts运行机制
- sql 百万级数据库优化方案
- JAVA英文面试题(15道)
- 【Android.mk】android编译系统makefile文件Android.mk的写法
- 在cmd中FOR的用法
- 关于TScreen::TDataModule没有互斥,在Datasnap中引出的BUG
- Spring + iBatis 1对多表关系配置