链接

也是矩阵经典题目  二分递归求解

a+a^2+a^3+..+a^(k/2)+a^(k/2+1)+...+a^k = a+a^2+..+a^k/2+a^k/2(a^1+a^2+..+a^k/2)(偶数)

a+a^2+a^3+..+a^(k/2)+a^(k/2+1)+...+a^k = a+a^2+..+a^k/2+a^k/2(a^1+a^2+..+a^k/2)+a^k。 奇数

 1 #include <iostream>
 2 #include<cstdio>
 3 #include<cstring>
 4 #include<algorithm>
 5 #include<stdlib.h>
 6 #include<vector>
 7 #include<cmath>
 8 #include<queue>
 9 #include<set>
10 using namespace std;
11 #define N 1e9
12 #define LL long long
13 #define INF 0xfffffff
14 const double eps = 1e-8;
15 const double pi = acos(-1.0);
16 const double inf = ~0u>>2;
17 struct Mat
18 {
19     int mat[31][31];
20 };
21 int n,mod;
22 Mat operator + (Mat a,Mat b)
23 {
24     Mat c;
25     int i,j;
26     for(i = 0 ; i < n ;i++)
27         for(j = 0 ;j < n ;j++)
28         {
29             if(a.mat[i][j]+b.mat[i][j]>mod)
30             c.mat[i][j] = (a.mat[i][j]+b.mat[i][j])%mod;
31             else
32             c.mat[i][j] = a.mat[i][j]+b.mat[i][j];
33         }
34     return c;
35 }
36 Mat operator * (Mat a,Mat b)
37 {
38     Mat c;
39     memset(c.mat,0,sizeof(c.mat));
40     int i,j,k;
41     for(k =0 ; k < n ; k++)
42     {
43         for(i = 0 ; i < n ;i++)
44         {
45             if(a.mat[i][k]==0) continue;
46             for(j = 0 ;j < n ;j++)
47             {
48                 if(b.mat[k][j]==0) continue;
49                 c.mat[i][j] = (c.mat[i][j]+a.mat[i][k]*b.mat[k][j])%mod;
50             }
51         }
52     }
53     return c;
54 }
55 Mat operator ^(Mat a,int k)
56 {
57     Mat c;
58     int i,j;
59     for(i =0 ; i < n ;i++)
60         for(j = 0; j < n ;j++)
61         c.mat[i][j] = (i==j);
62     for(; k ;k >>= 1)
63     {
64         if(k&1) c = c*a;
65         a = a*a;
66     }
67     return c;
68 }
69 Mat solve(Mat x,int k)
70 {
71     if(k==1) return x;
72     Mat c ;
73     c = x^k;
74     Mat a = solve(x,k/2);
75     Mat b = x^(k/2);
76     if(k&1) c = a+b*a+c;
77     else c = a+b*a;
78     return c;
79 }
80 int main()
81 {
82     int t;
83     int i,j;
84     while(scanf("%d%d%d",&n,&t,&mod)!=EOF)
85     {
86         Mat x;
87         for(i = 0 ; i < n ;i++)
88             for(j = 0; j < n ;j++)
89             scanf("%d",&x.mat[i][j]);
90         x = solve(x,t);
91         for(i =0 ; i < n ;i++)
92         {
93             for(j =0 ; j < n-1; j++)
94             printf("%d ",x.mat[i][j]%mod);
95             printf("%d\n",x.mat[i][n-1]%mod);
96         }
97     }
98     return 0;
99 }

View Code

转载于:https://www.cnblogs.com/shangyu/p/3621001.html

poj3233Matrix Power Series相关推荐

  1. I-Matrix Power Series POJ - 3233 矩阵快速幂+分治

    I-Matrix Power Series POJ - 3233 矩阵快速幂+分治 Problem Description Given a n × n matrix A and a positive ...

  2. 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)= ...

  3. 【矩阵乘法】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 ...

  4. Matrix Power Series

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

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

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

  6. poj 3233 Matrix Power Series

    最近一直在做矩阵的题目,这算是一道简单题目吧. 建立一个矩阵的结构体,便于赋值和返回值. S = A + A2 + A3 + - + Ak 如果 S=A+A2 + A3 +A4   S= (A + A ...

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

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

  8. POJ3233 Matrix Power Series

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

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

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

最新文章

  1. mysql 前台启动_从Windows命令行启动MySQL
  2. Linux控制台打开显示字符画,Linux 命令行字符画工具
  3. UIWindow 使用介绍
  4. 在vuejs 中使用axios不能获取属性data的解决方法
  5. 使用JS 加入收藏,设为首页.
  6. Xcode 9.0 新增功能大全
  7. (转)Thrift在Windows及Linux平台下的安装和使用示例
  8. JQuery Easyui/TopJUI表格基本的删除功能(删除当前行和多选删除)
  9. 量子计算机与仿生论文,有关量子力学的论文
  10. PS 画笔工具与文字工具
  11. #Linux中的GCC编程# 20170731 C培训作业
  12. Myeclipse2014破解教程
  13. 计算机无法识别u盘,电脑无法识别U盘怎么办?简单搞定
  14. android 实现qq动画,Android实现仿QQ登录界面背景动画效果
  15. 会计基础-会计账簿+对账+结账+财产清查+财务会计报告+会计核算程序
  16. ele-ui 里面的分页操作
  17. 易基因技术推介|简化基因组甲基化测序研究解决方案
  18. 数据结构 :: 顺序栈与链式栈的设计与实现
  19. 尚硅谷-康师傅-MySQL详细笔记(1-9章)
  20. 2018年 团体程序设计天梯赛——题解集

热门文章

  1. 优秀Python学习资源收集汇总
  2. 如何对建模型数据进行预处理
  3. java 7个数排序_7 Java 快速排序
  4. python画图如何调整图例位置_Python——legend()图例位置调整
  5. 典型微型计算机的基本结构包括,第二章 微型计算机基础.doc
  6. python爬虫正则表达式爬取网页标签_Python爬虫实例(4)-用urllib、re和正则表达式爬取网页图片...
  7. js数组常用方法总结(包括ES6)
  8. “21天好习惯”第一期-7
  9. java常用lib_Java常用工具类整理
  10. 【Java程序设计】类的重用