给出一个N * N的矩阵,其中的元素均为正整数。求这个矩阵的M次方。由于M次方的计算结果太大,只需要输出每个元素Mod (10^9 + 7)的结果。

Input

第1行:2个数N和M,中间用空格分隔。N为矩阵的大小,M为M次方。(2 <= N <= 100, 1 <= M <= 10^9)
第2 - N + 1行:每行N个数,对应N * N矩阵中的1行。(0 <= N[i] <= 10^9)

Output

共N行,每行N个数,对应M次方Mod (10^9 + 7)的结果。

Input示例

2 3
1 1
1 1

Output示例

4 4
4 4

题意明了,一个矩阵和自己不断相乘,我也是第一次做有关矩阵乘法的题,之前做过很多快速幂的题,这道题就是快速幂结合矩阵乘法,横列都是一样,难度就没那么高了

1: 因为矩阵相乘的一步要用到原本矩阵的数组,所以矩阵各位置算出来不能马上替换,因为其他位置的数算的时候会用到

2:我只用了一个最简单暴力的方法,开个数组暂时保存,整个矩阵算完后再替换,这样也比较麻烦,有空再看看怎么乘优化

代码献上

#include<cstdio>
#include<iostream>
#include<mem.h>
#include<math.h>
using namespace std;int n,m,i,j,j2;int mod=1000000007,a[100][100],b[100][100],c[100][100];   //c是答案,b是临时数组,a是用于快速函数中void kuaisu(int n,int m){while(m>0){if(m&1){memset(b,0,sizeof(b));     //临时数组清0for(i=0;i<n;i++)                    //用临时数组保存计算for(j=0;j<n;j++)for(j2=0;j2<n;j2++)b[i][j]=(b[i][j]+c[i][j2]*a[j2][j]%mod)%mod;for(i=0;i<n;i++)for(j=0;j<n;j++)                 //将a数组替换为bc[i][j]=b[i][j];}m=m>>1;memset(b,0,sizeof(b));      //b清0,用于保存a * afor(i=0;i<n;i++)for(j=0;j<n;j++){for(j2=0;j2<n;j2++){b[i][j]=(b[i][j]+a[i][j2]*a[j2][j]%mod)%mod;}}for(i=0;i<n;i++)for(j=0;j<n;j++)a[i][j]=b[i][j];}}
int main()
{memset(b,0,sizeof(b));scanf("%d%d",&n,&m);for(i=0;i<n;i++)for(j=0;j<n;j++){scanf("%d",&a[i][j]);c[i][j]=a[i][j];}kuaisu(n,m-1);for(i=0;i<n;i++){for(j=0;j<n;j++)printf("%d ",c[i][j]);printf("\n");}return 0;
}

51nod 1113 矩阵快速幂 (矩阵的n次方)相关推荐

  1. 矩阵小专题(矩阵快速幂+矩阵加速)

    1.什么是矩阵? 矩阵(数学术语)_百度百科 2.矩阵快速幂 首先要知道,只有n*n的矩阵能乘以自身(否则不符合矩阵相乘的条件) 然后要明白普通的快速幂的原理(本质是把幂次二分,代码如下) inlin ...

  2. 1647:迷路(矩阵快速幂+矩阵点的拆分)

    1647:迷路 时间限制: 1000 ms 内存限制: 524288 KB 提交数: 97 通过数: 69 [题目描述] 原题来自:SCOI 2009 Windy 在有向图中迷路了. 该有向图有 N ...

  3. 快速幂、矩阵快速幂、快速乘法

    快速幂 快速幂是我们经常用到的一种算法,快速幂顾名思义就是快速的幂运算.我们在很多题目中都会遇到幂运算,但是在指数很大的时候,我们如果用for或者是pow就会超时,这时候就用到了快速幂. 快速幂的原理 ...

  4. 矩阵问题入门(矩阵乘法and矩阵快速幂)acm寒假集训日记22/1/15

    今天凌晨3点才睡,没想到通过看小说抑制玩游戏,反而看小说的时间更长. u1s1:那小说太刺激了,晚上看很有感觉,风吹草动我就会猛地看过去(类似茄子说柜子动了,哈哈),真TM(语气词)练胆量!!!..Q ...

  5. 矩阵相关操作和矩阵快速幂

    矩阵相关操作和矩阵快速幂 矩阵基本运算以及快速幂模板 POJ - 3070. Fibonacci Hdu - 1757A. Simple Math Problem Codeforces - 185A. ...

  6. 数论-快速幂、矩阵快速幂、慢速乘

    文章目录 快速幂 矩阵快速幂 慢速乘 例题 HDU-2817 HDU-3117 XUJC-1395 快速幂 首先幂运算 a n a^n an就是 n n n个 a a a相乘,我们可以直接调用库函数 ...

  7. 快速幂+矩阵快速幂(总结+例题)

    1.快速幂 以求a的b次方来介绍: 首先把b转换成二进制数 该二进制数第i位的权为  2^i - 1 . 比如 : 11的二进制是1011 11 = 2³×1 + 2²×0 + 2¹×1 + 2º×1 ...

  8. 矩阵快速幂详解--用矩阵幂解决的多种问题

    最经典的题目 以及洛谷一大堆相似题斐波那契升级版,广义斐波那契等等,都是相关的题目.一般而言我们求解斐波那契无非是不断地向前迭代,但是这样的效率实在是太低了.对于nnn的规模如此之大的题目应该如何求解 ...

  9. 快速幂和矩阵快速幂详解+模板

    1.快速幂 一般的,我们都知道求只需要连续乘3次2就能得到,那么等于多少呢?其实这个一很简单,不就是13个2相乘吗,连续乘13次2就行了.那么,呢? 是不是要连续乘100次.1000次,我们将这类问题 ...

最新文章

  1. loadrunner—参数化
  2. 单元测试(Unit Test)学习
  3. 循环结构作业c语言,C语言循环结构练习题带答案(最新整理)
  4. 拒绝暴力调参!推荐一个模型Debug神器!
  5. distribution was not found and is required by the application错误
  6. php curl 批量,关于用php的curl批量抓取内容
  7. SpringBoot WEB 核心原理
  8. WPF学习笔记5: Xaml之Markup Extensions
  9. 交叉熵和极大似然估计的再理解
  10. HDU 2068 RPG 的错排(错排问题,组合数)
  11. 不同图像的噪声,选用什么滤波器去噪,图像处理的噪声和处理方法
  12. Elasticsearch集群规划及节点角色规划醉佳实践
  13. BUUCTF:[XMAN2018排位赛]通行证
  14. GAN之父离开苹果重返谷歌,SpaceX最新估值达1250亿美元,美国官方公布UFO进展,今日更多大新闻在此...
  15. 什么是MBTI,16种人格类型详解
  16. Reason Studios Reason 12 v12.2.5 WiN 音乐制作软件和机架插件
  17. 请注意:黑客开始用云隐藏IP地址
  18. 京东数科DevOps落地攻略
  19. python用户输入字符串串从小到大排序_python字符串从小到大排序
  20. 《Python cookbook》 “定义一个属性可由用户修改的装饰器” 笔记

热门文章

  1. C语言主函数返回值含义
  2. 软件项目研发过程中阶段划分和工作方法
  3. ArangoDB——图遍历 Graph
  4. 已使用管理员权限运行CMD,仍报错OSError: [WinError 5] 拒绝访问。: ‘E:\\Code\\Python\\Git\\stable-diffusion-webui\\venv\\
  5. ORB-SLAM2系列第六章—— 跟踪线程
  6. 网络体系结构基本概念及OSI七层模型
  7. 【实习之路】三本的我字节实习转正,终于尘埃落定——分享我的大学四年
  8. C++之适配器(以优先队列为例)
  9. The Rust Programming Language - 第13章 Rust语言中的函数式语言功能:迭代器与闭包 - 13.1 可以捕获其环境的匿名函数
  10. 牛逼的js--就是d3.js