poj3233】的更多相关文章

http://poj.org/problem?id=3233 (题目链接) 题意 给出一个n×n的矩阵A,求模m下A+A2+A3+…+Ak 的值 Solution 今日考试就A了这一道题.. 当k为偶数时,原式=(Ak2+1)×(A1+A2+...+Ak2). 当k为奇数的时候将Ak乘上当前答案后抠出去,最后统计答案时再加上.所以我们就一路快速幂搞过去,AC 代码 // poj3233 #include<algorithm> #include<iostream> #include&…
poj3233 http://poj.org/problem?id=3233 给定n ,k,m 然后是n*n行, 我们先可以把式子转化为递推的,然后就可以用矩阵来加速计算了.  矩阵是加速递推计算的一个好工具 我们可以看到,矩阵的每个元素都是一个矩阵,其实这计算一个分块矩阵,我们可以把分块矩阵展开,它的乘法和普通矩阵的乘法是一样的. #include <stdio.h> #include <string.h> #include <stdlib.h> #include &…
poj3233 题意 给出一个 \(n \times n\) 的矩阵 \(A\) ,求 \(A + A^2 + A^3 + ... + A^k\) . 分析 构造矩阵 \[ \begin{bmatrix} A & E \\ 0 & E \\ \end{bmatrix} \] 记为 \(B\) ,其中 \(A\) 为原矩阵,\(E\) 为 \(n \times n\) 的单位矩阵,\(0\) 为 \(n \times n\) 的零矩阵. 那么求 \(B^{k+1}\) , 有 \[\begi…
本文为博主原创文章,欢迎转载,请注明出处 www.cnblogs.com/yangyaojia [POJ3233]Matrix Power Series 分治+矩阵 题目大意 A为n×n(n<=30)的矩阵,让你求 \(\sum\limits_{i=1}^{k}A^i\) 并将答案对取模p 输入格式: 有多组测试数据,其中第一行有3个正整数,为n,k(k<=\(10^9\)),p(p<=\(10^4\)) 后面有n行,每行n个数. 输出格式: 输出最后答案的矩阵. 输入输出样例 inpu…
对于数列S(n) = a + a^2 + a^3 +....+ a^n; 可以用二分的思想进行下列的优化. if(n & 1) S(n) = a + a^2 + a^3 + ....... + a^n; = a + a^2 + a^3 +..+ a^((n-1) / 2) + a^((n-1) / 2 + 1) + a^((n-1) / 2 + 2) + ... + a^((n-1) / 2 + (n-1) / 2) + a^((n-1) / 2 + (n-1) / 2 + 1); = (1 +…
Description Given a n × n matrix A and a positive integer k, find the sum S = A + A2 + A3 + … + Ak. Input The input contains exactly one test case. The first line of input contains three positive integers n (n ≤ 30), k (k ≤ 109) and m (m < 104). Then…
这道题其实算是把快速幂的思想用在多项式之中 A+A^2+A^3+…+A^n=(A+A^1…+A^[n/2])+A^[n/2](A+A+A^1…+A^[n/2])+n mod 2*A^n 然后就是打码的问题了 ..,..] of longint; d:..] of longint; i,j,n,m,p:longint; procedure mul; var i,j,k:longint; begin to n do to n do begin c[i,j]:=; to n do c[i,j]:=(c…
Matrix Power Series Time Limit: 3000MS   Memory Limit: 131072K Total Submissions: 12346   Accepted: 5262 Description Given a n × n matrix A and a positive integer k, find the sum S = A + A2 + A3 + … + Ak. Input The input contains exactly one test cas…
题目非常有简单: Description Given a n × n matrix A and a positive integer k, find the sum S = A + A2 + A3 + - + Ak. Output S mod m 范围:n (n ≤ 30), k (k ≤ 109) and m (m < 104). 显然,暴力是不能解决这个问题,这题目非常有意思,并且不会非常难想. 我採取的是递归二分求解: 当k 为偶数:  能够化为 (A+ A ^2 +...+A^(k/2)…
S(k)=A^1+A^2...+A^k. 保利求解就超时了,我们考虑一下当k为偶数的情况,A^1+A^2+A^3+A^4...+A^k,取其中前一半A^1+A^2...A^k/2,后一半提取公共矩阵A^k/2后可以发现也是前一半A^1+A^2...A^k/2.因此我们可以考虑只算其中一半,然后A^k/2用矩阵快速幂处理.对于k为奇数,只要转化为k-1+A^k即可.n为矩阵数量,m为矩阵大小,复杂度O[(logn*logn)*m^3] #include <iostream> #include &…