POJ 3233 Matrix Power Series(矩阵快速幂)
Matrix Power Series 
Time Limit: 3000MS      Memory Limit: 131072K 
Total Submissions: 19338        Accepted: 8161 
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 follow n lines each containing n nonnegative integers below 32,768, giving A’s elements in row-major order.
Output
Output the elements of S modulo m in the same way as A is given.
Sample Input
2 2 4 
0 1 
1 1 
Sample Output
1 2 
2 3
可以找到递推关系 : s[k]=s[k-1]+A^k; 
然后构造矩阵,利用矩阵快速幂 
具体见代码
#include <iostream>
#include <string.h>
#include <algorithm>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
int n,k;
int m;
struct Node
{
    int a[65][65];
};
Node multiply(Node a,Node b)
{
    Node c;
    for(int i=1;i<=n;i++)
    {
        for(int j=1;j<=n;j++)
        {
            c.a[i][j]=0;
            for(int k=1;k<=n;k++)
            {
                (c.a[i][j]+=(a.a[i][k]*b.a[k][j])%m)%=m;
             }
        }
    }
    return c;
}
Node quick(Node a,int x)
{
    Node c;
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
        c.a[i][j]=(i==j?1:0);
    for(x;x>0;x>>=1)
    {
        if(x&1)
            c=multiply(c,a);
        a=multiply(a,a);
     }
    return c;
}
int main()
{
   while( scanf("%d%d%d",&n,&k,&m)!=EOF)
   {
    Node a;Node b;Node c;
    memset(a.a,0,sizeof(a.a));
    memset(b.a,0,sizeof(b.a));
    for(int i=1;i<=n;i++)
        for(int j=1;j<=n;j++)
        {
            scanf("%d",&a.a[i][j+n]);
            b.a[i+n][j+n]=a.a[i][j+n];
        }
    for(int i=1;i<=n;i++)
    {
        b.a[i][i]=1;
        b.a[i+n][i]=1;
    }
    n=n*2;
    c=multiply(a,quick(b,k));
    for(int i=1;i<=n/2;i++)
        for(int j=1;j<=n/2;j++)
           if(j==n/2)printf("%d\n",c.a[i][j]);
           else printf("%d ",c.a[i][j]);
   }
    return 0;
}
POJ 3233 Matrix Power Series(矩阵快速幂)的更多相关文章
- POJ 3233 Matrix Power Series 矩阵快速幂
		设S[k] = A + A^2 +````+A^k. 设矩阵T = A[1] 0 E E 这里的E为n*n单位方阵,0为n*n方阵 令A[k] = A ^ k 矩阵B[k] = A[k+1] S[k] ... 
- POJ 3233 Matrix Power Series 矩阵快速幂+二分求和
		矩阵快速幂,请参照模板 http://www.cnblogs.com/pach/p/5978475.html 直接sum=A+A2+A3...+Ak这样累加肯定会超时,但是 sum=A+A2+...+ ... 
- POJ 3233:Matrix Power Series 矩阵快速幂 乘积
		Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Total Submissions: 18450 Accepted: ... 
- poj 3233 Matrix Power Series(矩阵二分,高速幂)
		Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Total Submissions: 15739 Accepted: ... 
- POJ3233:Matrix Power Series(矩阵快速幂+二分)
		http://poj.org/problem?id=3233 题目大意:给定矩阵A,求A + A^2 + A^3 + … + A^k的结果(两个矩阵相加就是对应位置分别相加).输出的数据mod m.k ... 
- poj 3233 Matrix Power Series  矩阵求和
		http://poj.org/problem?id=3233 题解 矩阵快速幂+二分等比数列求和 AC代码 #include <stdio.h> #include <math.h&g ... 
- POJ3233 Matrix Power Series 矩阵快速幂 矩阵中的矩阵
		Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Total Submissions: 27277 Accepted: ... 
- Poj 3233 Matrix Power Series(矩阵乘法)
		Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Description Given a n × n matrix A and ... 
- POJ 3233 Matrix Power Series(矩阵高速功率+二分法)
		职务地址:POJ 3233 题目大意:给定矩阵A,求A + A^2 + A^3 + - + A^k的结果(两个矩阵相加就是相应位置分别相加).输出的数据mod m. k<=10^9. 这 ... 
- POJ3233:Matrix Power Series(矩阵快速幂+递推式)
		传送门 题意 给出n,m,k,求 \[\sum_{i=1}^kA^i\] A是矩阵 分析 我们首先会想到等比公式,然后得到这样一个式子: \[\frac{A^{k+1}-E}{A-E}\] 发现要用矩 ... 
随机推荐
- Nginx配置优化详解
			如果你已经安装过Nginx并在生产环境中使用,那么Nginx配置优化你一定也要做,这样才能看到Nginx性能,本文就从基本配置优化开始到高层配置教你如何优化Nginx 大多数的Nginx安装指南告诉你 ... 
- 单页应用SPA做SEO的一种清奇的方案
			单页应用SPA做SEO的一种清奇的方案 网上有好几种单页应用转seo的方案,有服务端渲染ssr.有预渲染prerender.google抓AJAX.静态化...这些方案都各有优劣,开发者可以根据不同的 ... 
- shell脚本之函数的使用
			把代码封装成函数,相当于造了一个“轮子”,之后就直接重复使用即可. 函数的创建 shell中函数的创建有2种方式 1.使用function关键字 语法 function test { ... } 2. ... 
- 关于HashMap初始化容量问题
			使用阿里云代码规范插件扫描后出现以下提示: hashmap should set a size when initalizing,即hashmap应该在初始化时设置一个大小 在网上搜到一篇讲解(htt ... 
- word文档老是出现这个提示-----“发现二义性的名称:TmpDDE”错误
			你好 我解决这个问题了,我把appdata目录下的normal.dotm删除了就没问题了 将系统中路径C:\Users\Administrator\AppData\Roaming\Microsoft\ ... 
- iOS开发 支持https请求以及ssl证书配置(转)
			原文地址:http://blog.5ibc.net/p/100221.html 众所周知,苹果有言,从2017年开始,将屏蔽http的资源,强推https 楼主正好近日将http转为https,给还没 ... 
- QT 4.8.5 源代码目录调整
			* 前言: 有一个代码比较乱的 QT 源码,我想让它分目录整理一下,特此记录一下. * 在原来的代码里面,里面很多文件都是在主文件里面,这样做的话不好维护以及整理 network 里面所有的文件都是和 ... 
- bash的使用技巧
- RabbitMQ之主题(Topic)【译】
			在上一节中,我们改进了我们的日志系统,替换使用fanout exchange仅仅能广播消息,使得选择性的接收日志成为可能. 虽然使用direct exchange改进了我们的系统,但是它仍然由他的局限 ... 
- Android基础总结(八)Service
			服务两种启动方式(掌握) startService 开始服务,会使进程变成为服务进程 启动服务的activity和服务不再有一毛钱关系 bindService 绑定服务不会使进程变成服务进程 绑定服务 ... 
