51nod 1113 矩阵快速幂 (矩阵的n次方)
给出一个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.什么是矩阵? 矩阵(数学术语)_百度百科 2.矩阵快速幂 首先要知道,只有n*n的矩阵能乘以自身(否则不符合矩阵相乘的条件) 然后要明白普通的快速幂的原理(本质是把幂次二分,代码如下) inlin ...
- 1647:迷路(矩阵快速幂+矩阵点的拆分)
1647:迷路 时间限制: 1000 ms 内存限制: 524288 KB 提交数: 97 通过数: 69 [题目描述] 原题来自:SCOI 2009 Windy 在有向图中迷路了. 该有向图有 N ...
- 快速幂、矩阵快速幂、快速乘法
快速幂 快速幂是我们经常用到的一种算法,快速幂顾名思义就是快速的幂运算.我们在很多题目中都会遇到幂运算,但是在指数很大的时候,我们如果用for或者是pow就会超时,这时候就用到了快速幂. 快速幂的原理 ...
- 矩阵问题入门(矩阵乘法and矩阵快速幂)acm寒假集训日记22/1/15
今天凌晨3点才睡,没想到通过看小说抑制玩游戏,反而看小说的时间更长. u1s1:那小说太刺激了,晚上看很有感觉,风吹草动我就会猛地看过去(类似茄子说柜子动了,哈哈),真TM(语气词)练胆量!!!..Q ...
- 矩阵相关操作和矩阵快速幂
矩阵相关操作和矩阵快速幂 矩阵基本运算以及快速幂模板 POJ - 3070. Fibonacci Hdu - 1757A. Simple Math Problem Codeforces - 185A. ...
- 数论-快速幂、矩阵快速幂、慢速乘
文章目录 快速幂 矩阵快速幂 慢速乘 例题 HDU-2817 HDU-3117 XUJC-1395 快速幂 首先幂运算 a n a^n an就是 n n n个 a a a相乘,我们可以直接调用库函数 ...
- 快速幂+矩阵快速幂(总结+例题)
1.快速幂 以求a的b次方来介绍: 首先把b转换成二进制数 该二进制数第i位的权为 2^i - 1 . 比如 : 11的二进制是1011 11 = 2³×1 + 2²×0 + 2¹×1 + 2º×1 ...
- 矩阵快速幂详解--用矩阵幂解决的多种问题
最经典的题目 以及洛谷一大堆相似题斐波那契升级版,广义斐波那契等等,都是相关的题目.一般而言我们求解斐波那契无非是不断地向前迭代,但是这样的效率实在是太低了.对于nnn的规模如此之大的题目应该如何求解 ...
- 快速幂和矩阵快速幂详解+模板
1.快速幂 一般的,我们都知道求只需要连续乘3次2就能得到,那么等于多少呢?其实这个一很简单,不就是13个2相乘吗,连续乘13次2就行了.那么,呢? 是不是要连续乘100次.1000次,我们将这类问题 ...
最新文章
- loadrunner—参数化
- 单元测试(Unit Test)学习
- 循环结构作业c语言,C语言循环结构练习题带答案(最新整理)
- 拒绝暴力调参!推荐一个模型Debug神器!
- distribution was not found and is required by the application错误
- php curl 批量,关于用php的curl批量抓取内容
- SpringBoot WEB 核心原理
- WPF学习笔记5: Xaml之Markup Extensions
- 交叉熵和极大似然估计的再理解
- HDU 2068 RPG 的错排(错排问题,组合数)
- 不同图像的噪声,选用什么滤波器去噪,图像处理的噪声和处理方法
- Elasticsearch集群规划及节点角色规划醉佳实践
- BUUCTF:[XMAN2018排位赛]通行证
- GAN之父离开苹果重返谷歌,SpaceX最新估值达1250亿美元,美国官方公布UFO进展,今日更多大新闻在此...
- 什么是MBTI,16种人格类型详解
- Reason Studios Reason 12 v12.2.5 WiN 音乐制作软件和机架插件
- 请注意:黑客开始用云隐藏IP地址
- 京东数科DevOps落地攻略
- python用户输入字符串串从小到大排序_python字符串从小到大排序
- 《Python cookbook》 “定义一个属性可由用户修改的装饰器” 笔记
热门文章
- C语言主函数返回值含义
- 软件项目研发过程中阶段划分和工作方法
- ArangoDB——图遍历 Graph
- 已使用管理员权限运行CMD,仍报错OSError: [WinError 5] 拒绝访问。: ‘E:\\Code\\Python\\Git\\stable-diffusion-webui\\venv\\
- ORB-SLAM2系列第六章—— 跟踪线程
- 网络体系结构基本概念及OSI七层模型
- 【实习之路】三本的我字节实习转正,终于尘埃落定——分享我的大学四年
- C++之适配器(以优先队列为例)
- The Rust Programming Language - 第13章 Rust语言中的函数式语言功能:迭代器与闭包 - 13.1 可以捕获其环境的匿名函数
- 牛逼的js--就是d3.js