51nod 1113 矩阵快速幂( 矩阵快速幂经典模板 )
1113 矩阵快速幂
链接:传送门
思路:经典矩阵快速幂,模板题,经典矩阵快速幂模板。
/*************************************************************************
> File Name: 51nod1113.cpp
> Author: WArobot
> Blog: http://www.cnblogs.com/WArobot/
> Created Time: 2017年05月01日 星期一 23时14分35秒
************************************************************************/
#include<bits/stdc++.h>
using namespace std;
const int maxn = 110;
const int MOD = 1e9 + 7;
#define mod(x) ((x)%MOD)
#define ll long long
struct mat{
int m[maxn][maxn];
}unit;
int n;
// 重载*使之能进行矩阵乘法运算
mat operator * (mat a,mat b){
mat ret;
ll x;
for(int i=0;i<n;i++){
for(int j=0;j<n;j++){
x = 0;
for(int k=0;k<n;k++)
x += mod( (ll)a.m[i][k]*b.m[k][j] );
ret.m[i][j] = mod(x);
}
}
return ret;
}
// 初始化单位矩阵unit
void init_unit(){
for(int i=0;i<maxn;i++)
unit.m[i][i] = 1;
}
// 计算矩阵a的x次幂
// 与普通快速幂原理相同
mat pow_mat(mat a,ll x){
mat ret = unit;
while(x){
if(x&1) ret = ret*a;
a = a*a;
x >>= 1;
}
return ret;
}
int main(){
ll m;
init_unit();
while(~scanf("%d%lld",&n,&m)){
mat a;
for(int i=0;i<n;i++)
for(int j=0;j<n;j++)
scanf("%d",&a.m[i][j]);
a = pow_mat(a,m);
for(int i=0;i<n;i++){
printf("%d",a.m[i][0]);
for(int j=1;j<n;j++)
printf(" %d",a.m[i][j]);
printf("\n");
}
}
return 0;
}
51nod 1113 矩阵快速幂( 矩阵快速幂经典模板 )的更多相关文章
- 51nod 1113 矩阵快速幂
题目链接:51nod 1113 矩阵快速幂 模板题,学习下. #include<cstdio> #include<cmath> #include<cstring> ...
- 矩阵乘法&矩阵快速幂&矩阵快速幂解决线性递推式
矩阵乘法,顾名思义矩阵与矩阵相乘, 两矩阵可相乘的前提:第一个矩阵的行与第二个矩阵的列相等 相乘原则: a b * A B = a*A+b*C a*c+b*D c d ...
- 【模拟题(电子科大MaxKU)】解题报告【树形问题】【矩阵乘法】【快速幂】【数论】
目录: 1:一道简单题[树形问题](Bzoj 1827 奶牛大集会) 2:一道更简单题[矩阵乘法][快速幂] 3:最简单题[技巧] 话说这些题目的名字也是够了.... 题目: 1.一道简单题 时间1s ...
- hdu_2604Queuing(快速幂矩阵)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2604 Queuing Time Limit: 10000/5000 MS (Java/Others) ...
- Number Sequence(快速幂矩阵)
题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1005 Number Sequence Time Limit: 2000/1000 MS (Java/O ...
- 求幂大法,矩阵快速幂,快速幂模板题--hdu4549
hdu-4549 求幂大法.矩阵快速幂.快速幂 题目 M斐波那契数列 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 ...
- 整数快速乘法/快速幂+矩阵快速幂+Strassen算法
快速幂算法可以说是ACM一类竞赛中必不可少,并且也是非常基础的一类算法,鉴于我一直学的比较零散,所以今天用这个帖子总结一下 快速乘法通常有两类应用:一.整数的运算,计算(a*b) mod c 二.矩 ...
- 【bzoj4870】[Shoi2017]组合数问题 dp+快速幂/矩阵乘法
题目描述 输入 第一行有四个整数 n, p, k, r,所有整数含义见问题描述. 1 ≤ n ≤ 10^9, 0 ≤ r < k ≤ 50, 2 ≤ p ≤ 2^30 − 1 输出 一行一个整数 ...
- 快速幂 & 矩阵快速幂
目录 快速幂 实数快速幂 矩阵快速幂 快速幂 实数快速幂 普通求幂的方法为 O(n) .在一些要求比较严格的题目上很有可能会超时.所以下面来介绍一下快速幂. 快速幂的思想其实是将数分解,即a^b可以分 ...
随机推荐
- UNIX时间转换ASP代码.txt
'参数:strTime:要转换的时 间:intTimeZone:该时间对应的时区 '返回值:strTime相对于1970年1月1日午夜0点经过的秒数 '示例:ToUnixTime("2008 ...
- [洛谷P4887]第十四分块(前体)
题目大意: 给定一个长度为\(n\)的序列\(a\),\(k\),和\(m\)次询问. 每次询问给定区间\([l,r]\),求满足\(l\leqslant i< j\leqslant r\)且\ ...
- 02.OOP面向对象-2.例子
class clothes: #初始化属性 def __init__(self,name,color): self.name = name self.color = color #转字符串 def _ ...
- 洛谷 P1137 旅行计划 (拓扑排序+dp)
在DAG中,拓扑排序可以确定dp的顺序 把图的信息转化到一个拓扑序上 注意转移的时候要用边转移 这道题的dp是用刷表法 #include<bits/stdc++.h> #define RE ...
- PHP学习总结(1)——PHP入门篇之PHP可以做什么?
为什么要学习PHP?"我可以用JavaScript来实现程序编写."但JavaScript的能力是有限的,JavaScript通常运行在浏览器(客户端),它可以制作网页上面的特效: ...
- Java基础学习总结(32)——Java项目命名规范
一.命名规范 1. 项目名全部小写 2. 包名全部小写 3. 类名首字母大写,如果类名由多个单词组成,每个单词的首字母都要大写. 如:public class MyFirstClass{} 4. 变量 ...
- jQuery选择器补充
---------------------------------------------------------------------------------------------------- ...
- BA-设计施工调试流程
工程范围 1.楼宇自控系统的工程设计首先要了解目标建筑物所处的地理环境.建筑物用途.楼宇自控系统的建设目标定位.建筑设备规模与控制工艺及监控范围等工程情况.这些情况一般在工程招标技术文件中介绍,设计者 ...
- 运行shell命令
首先将shell命令命名为.sh文件 将上面的代码保存为test.sh.并 cd 到对应文件夹: chmod +x ./test.sh #使脚本具有运行权限 ./test.sh #运行脚本 假设报错/ ...
- 用shell脚本实现linux系统上wifi模式(STA和soft AP)的转换
转载请注明出处:http://blog.csdn.net/hellomxj1/ 功能:在linux系统上实现wifi STA与AP功能的转换 实现成果:1.加入wifipassword账户add_wi ...