最近一直在做矩阵的题目,这算是一道简单题目吧。

建立一个矩阵的结构体,便于赋值和返回值。

S = A + A2 + A3 + … + Ak

如果 S=A+A2 + A3 +A4   S= (A + A2)*(E+A2)  所以只需要 二分操作就可以了

再辅助以 快速幂,矩阵乘法,矩阵加法就可以了

#include<cstdio>
#include<cstring>
#include<iostream>
using namespace std;
struct matrix{int f[40][40];
};
int n,m;
matrix pow(matrix a,matrix b)
{int i,j,k;matrix c;memset(c.f,0,sizeof(c.f));for(i=0;i<n;i++)for(j=0;j<n;j++)for(k=0;k<n;k++)c.f[i][j]=(c.f[i][j]+a.f[i][k]*b.f[k][j])%m;return c;
}
matrix quick_pow(matrix a,int k)
{matrix  s;memset(s.f,0,sizeof(s.f));int i;for(i=0;i<n;i++) s.f[i][i]=1;while(k){if(k&1)s=pow(s,a);a=pow(a,a);k=k>>1;}return s;
}
matrix add(matrix a,matrix b)
{int i,j;for(i=0;i<n;i++)for(j=0;j<n;j++)a.f[i][j]=(a.f[i][j]+b.f[i][j])%m;return a;
}
matrix solve(matrix A,int k)
{matrix  E;memset(E.f,0,sizeof(E.f));int i;for(i=0;i<n;i++) E.f[i][i]=1;if(k==1) return A;else if(k&1)return add(solve(A,k-1),quick_pow(A,k));elsereturn  pow(solve(A,k/2),(add(quick_pow(A,k/2),E)));
}
int main()
{int i,j,k;matrix prematrix;scanf("%d%d%d",&n,&k,&m);for(i=0;i<n;i++)for(j=0;j<n;j++)scanf("%d",&prematrix.f[i][j]);matrix ans=solve(prematrix,k);for(i=0;i<n;i++){for(j=0;j<n;j++){if(j==0) printf("%d",ans.f[i][j]%m);else printf(" %d",ans.f[i][j]%m);}printf("\n");}
}

poj 3233 Matrix Power Series相关推荐

  1. poj 3233 Matrix Power Series

    Matrix Power Series 思路 题意比较简单,就是要求S(n)=∑i=1nAiS(n) = \sum _{i = 1} ^{n} A^ {i}S(n)=∑i=1n​Ai,显然有S(n)= ...

  2. POJ 3233 Matrix Power Series 矩阵快速幂 + 二分

    题意:求矩阵的次方和 解题思路:最容易想到方法就是两次二分因为 我们可以把一段  A^1 + A^2 + .......A^K   变成  A^1 + ..A^(K/2) +( A^1 + ..A^( ...

  3. POJ 3233 Matrix Power Series (矩阵分块,递推)

    矩阵乘法是可以分块的,而且幂的和也是具有线性的. 不难得到 Si = Si-1+A*Ai-1,Ai = A*Ai-1.然后矩阵快速幂就可以了. /*************************** ...

  4. POJ 3233 Matrix Power Serie

    题意:给一个n×n的矩阵A,求S = A + A2 + A3 + - + Ak. 解法:从式子中可得递推式S(n) = S(n - 1) + An,An = An-1×A,可得矩阵递推式 [S(n), ...

  5. POJ 3233 Matrix Power Serie (矩阵快速幂)

    Description Given a n × n matrix A and a positive integer k, find the sum S = A + A2 + A3 + - + Ak. ...

  6. poj 3323 Matrix Power Series (矩阵乘法 非递归形式)

    为了搞自动机+矩阵的题目,特来学习矩阵快速幂..........非递归形式的求Sum(A+A^2+...+A^k)不是很懂,继续弄懂................不过代码简洁明了很多,亮神很给力 # ...

  7. 【矩阵乘法】Matrix Power Series(poj 3233)

    Matrix Power Series poj 3233 题目大意 给你一个矩阵A,让你求S=A+A2+A3+-+AkS = A + A^2 + A^3 + - + A^kS=A+A2+A3+-+Ak ...

  8. Matrix Power Series

    http://poj.org/problem?id=3233 题解: 构造矩阵: a:A        1 b:A        0 A        1 其中 矩阵套矩阵: A代表原矩阵: 1代表单 ...

  9. POJ3233 Matrix Power Series

    原题传送:http://poj.org/problem?id=3233 两个二分:二分 k ,二分矩阵. 求Sn = A + A2 + A3 + - + Ak. 首先我们能矩阵二分快速幂计算出Ak,那 ...

最新文章

  1. 如何在Eclipse里方便地进行markdown文件编辑
  2. SAP CRM WebUI Opportunity belongs to me的处理逻辑
  3. 【C++基础】异常匹配与内建异常类
  4. delphi7 如何判定dbgrid两行重复_教你如何在服装上加入好看的毛线刺绣花边
  5. 涉及子模块_COMSOL Multiphysics 5.6 RF模块更新详解
  6. 3详细参数_大疆精灵3值得入手吗?最详细的实测体验,各种参数应有尽有!
  7. Java中的Thread.sleep()– Java线程睡眠
  8. 高考出分,志愿填报成难题
  9. mysql 小类型_mysql数据类型
  10. [原创]如何免费使用宝塔专业版
  11. Thinkpad SL-400 XP驱动下载与安装方法
  12. 【论文阅读|深读】RolNE: Improving the Quality of Network Embedding with Structural Role Proximity
  13. 分享Python采集的77个PHP整站程序源码
  14. 基于EasyNVR摄像机无插件直播方案二次开发实现自己的摄像机IPC-NVR无插件化直播解决方案
  15. 常用SQL语句大全,数据分析师入门必备!
  16. 详解HBase架构原理
  17. 如何为区块链项目设计token机制
  18. Codeforces1509.B. TMT Document
  19. not found error :\tensorflow\contrib\coder\python\ops\_coder_ops.so——_gru_ops.so——_lstm_ops.so···
  20. C语言字符数组显示钻石,c++两种字符串赋值方式 并介绍 C语言下遍历目录文件的方式...

热门文章

  1. C++中基于Crt的内存泄漏检测
  2. 3_11 InterpreterMode 解释器模式
  3. 内网突破SSL嗅探的探究
  4. 数据结构与算法 | 堆排序
  5. 大众点评app 数据解密和反序列化
  6. pycharm debug 断点调试
  7. RabbitMQ单机多实例配置
  8. Spring Cloud Gateway 整合阿里 Sentinel网关限流实战
  9. 一些实用的编程模式 | Options模式
  10. sync.Once 的前世今生