poj3233 等比矩阵二分求和
来源:互联网 发布:钢笔日常书法知乎 编辑:程序博客网 时间:2024/05/20 23:07
题意:给定矩阵A
求A+A^2+A^3+.......+A^k
如何转化
令SUM(k)==A+A^2+A^3+.......+A^k
则SUM(k)=(1 + A^(k/2) ) * (A+A^2+A^3+.......+A^k) + A^k (k为奇数)
=(1 + A^(k/2) ) * (A+A^2+A^3+.......+A^k) (k为偶数)
直接递归就好
AC代码
#include <bits/stdc++.h>using namespace std;struct Array{int matrix[30][30];}t;int n,k,mod;Array add(Array x,Array y){Array res;memset(res.matrix,0,sizeof(res.matrix));for(int i=0;i<n;i++)for(int j=0;j<n;j++)res.matrix[i][j]=(x.matrix[i][j]+y.matrix[i][j])%mod;return res;}Array mul(Array x,Array y){Array res;memset(res.matrix,0,sizeof(res.matrix));for(int i=0;i<n;i++)for(int j=0;j<n;j++)for(int k=0;k<n;k++){res.matrix[i][j]+=x.matrix[i][k]*y.matrix[k][j]%mod;res.matrix[i][j]%=mod;}return res;}Array matrix_ksm(Array a,int b){Array res,temp;memset(res.matrix,0,sizeof(res.matrix));for(int i=0;i<n;i++)res.matrix[i][i]=1;temp=a;while(b){if(b&1)res=mul(res,temp);temp=mul(temp,temp);b>>=1;}return res;}Array sum(int k){Array res;if(k==0){memset(res.matrix,0,sizeof(res.matrix));return res;}Array nextsum=sum(k/2);res=add(nextsum,mul(matrix_ksm(t,k/2),nextsum));if(k&1)res=add(res,matrix_ksm(t,k));return res;}int main(){//freopen("in.in","r",stdin);while(scanf("%d%d%d",&n,&k,&mod)!=EOF){for(int i=0;i<n;i++)for(int j=0;j<n;j++)scanf("%d",&t.matrix[i][j]);Array ans=sum(k);for(int i=0;i<n;i++){for(int j=0;j<n;j++)printf("%d ",ans.matrix[i][j]);printf("\n");}}}
阅读全文
0 0
- poj3233 等比矩阵二分求和
- 等比矩阵求和-POJ3233
- POJ3233 矩阵幂求和
- POJ3233 矩阵的N次幂求和 二分
- POJ3233 Matrix Power Series 矩阵快速幂+二分求和
- POJ - 3233 Matrix Power Series (矩阵等比二分求和)
- POJ3233(矩阵二分再二分)
- HDU 1588 Gauss Fibonacci 斐波那契矩阵+等比矩阵二分求和
- HDU 1588 Gauss Fibonacci(矩阵快速幂+二分等比序列求和)
- HDU 2254 奥运(矩阵快速幂+二分等比序列求和)
- POJ 3233 Matrix Power Series (矩阵乘法+快速幂+等比二分求和) -
- poj3233经典二分矩阵快速幂
- HDOJ-2243 AC自动机.等比矩阵求和
- poj3233Matrix Power Series (等比矩阵求和)
- 等比求和
- Matrix Power Series(poj3233快速幂+矩阵二分幂+分治)
- POJ3233 - Matrix Power Series - 二分矩阵快速幂
- POJ3233---Matrix Power Series(矩阵快速幂+二分)
- HNOI2013解题报告
- “System.Configuration”中不存在类型或命名空间名称“ConfigurationManager”
- ios mysql 学习1 首先建立自己的主页及数据
- 『ORACLE』 内置约束(11g)
- python的安装和代码保存
- poj3233 等比矩阵二分求和
- 辗转相除法求最大公约数
- HNOI2011解题报告
- 实习第五天 工作总结
- c++作业6
- 输入adb shell 时 提示error: more than one device and emulator
- Unity3d
- HNOI2012解题报告
- 大日志文件中如何统计单词个数?及map按value排序lambda表达式版