poj 3233 Matrix Power Series (构造矩阵)
2015-02-26 20:13
267 查看
等比矩阵性质
#include<iostream> #include<math.h> #include<stdio.h> #include<algorithm> #include<string.h> #include<vector> #include<queue> #include<map> #include<set> using namespace std; #define B(x) (1<<(x)) typedef long long ll; const int oo=0x3f3f3f3f; const ll OO=1LL<<61; const ll MOD=10000; const int maxn=66; int n,m; int val[100005]; struct Matrix { ll maze[maxn][maxn]; void Init() { for(int i=0;i<n/2;i++) for(int j=n/2;j<n;j++) maze[i][j]=(i==j-n/2); for(int i=n/2;i<n;i++) for(int j=n/2;j<n;j++) maze[i][j]=(i==j); for(int i=n/2;i<n;i++) for(int j=0;j<n/2;j++) maze[i][j]=0; } friend Matrix operator*(Matrix a,Matrix b) { Matrix c; memset(c.maze,0,sizeof c.maze); for(int i=0;i<n;i++) for(int j=0;j<n;j++) for(int k=0;k<n;k++) c.maze[i][j]=(c.maze[i][j]+a.maze[i][k]*b.maze[k][j]+m)%m; return c; } friend Matrix operator^(Matrix a,int k) { Matrix c; for(int i=0;i<n;i++) for(int j=0;j<n;j++) c.maze[i][j]=(i==j); while(k) { if(k&1) c=c*a; a=a*a; k>>=1; } return c; } }; int main() { int k; Matrix A; while(scanf("%d %d %d",&n,&k,&m)!=EOF) { n<<=1; A.Init(); for(int i=0;i<n/2;i++) for(int j=0;j<n/2;j++) scanf("%I64d",&A.maze[i][j]); k++; Matrix ans=A^k; for(int i=0;i<n/2;i++) for(int j=n/2;j<n;j++) printf("%I64d%c",(i==j-n/2)?(ans.maze[i][j]-1+m)%m:ans.maze[i][j],j==n-1?'\n':' '); } return 0; }
相关文章推荐
- poj 3233 Matrix Power Series 矩阵构造+快速幂
- Matrix Power Series(POJ 3233 构造新矩阵求解+ 快速矩阵幂)
- poj 3233 Matrix Power Series(矩阵幂的和,矩阵快速幂)
- POJ 3233 Matrix Power Series (矩阵快速幂)
- POJ 3233 Matrix Power Series (矩阵快速幂+二分)
- POJ-3233 Matrix Power Series(矩阵快速幂)
- POJ 3233 Matrix Power Series (矩阵 + 二分)
- poj 3233 Matrix Power Series(矩阵快速幂)
- 矩阵经典题目三:poj 3233 Matrix Power Series(等比矩阵求和)
- POJ 3233 Matrix Power Series(矩阵等比数列求和)
- Matrix Power Series - POJ 3233 - 矩阵快速幂
- POJ 3233 Matrix Power Series(矩阵+二分)
- POJ 3233 Matrix Power Series (矩阵快速幂+二分求解)
- 【矩阵快速幂+二分】Matrix Power Series POJ - 3233
- 矩阵十大经典题目之三-POJ-3233-Matrix Power Series-两次二分
- POJ 3233 Matrix Power Series 矩阵快速幂+二分求和
- poj 3233 --- Matrix Power Series (二分,矩阵)
- POJ 3233 Matrix Power Series(矩阵快速幂+二分求和)
- POJ 3233 && NYOJ 298 Matrix Power Series(矩阵快速幂)
- (Relax 矩阵快速幂 1.2)POJ 3233 Matrix Power Series(用矩阵加法+矩阵快速幂来求sum= A + A2 + A3 + … + Ak)