洛谷P3390 【模板】矩阵快速幂
传送门
从今天开始学习矩阵快速幂.jpg
1 //minamoto 2 #include<iostream> 3 #include<cstdio> 4 #include<cstring> 5 #define ll long long 6 using namespace std; 7 #define getc() (p1==p2&&(p2=(p1=buf)+fread(buf,1,1<<21,stdin),p1==p2)?EOF:*p1++) 8 char buf[1<<21],*p1=buf,*p2=buf; 9 inline ll read(){ 10 #define num ch-'0' 11 char ch;bool flag=0;ll res; 12 while(!isdigit(ch=getc())) 13 (ch=='-')&&(flag=true); 14 for(res=num;isdigit(ch=getc());res=res*10+num); 15 (flag)&&(res=-res); 16 #undef num 17 return res; 18 } 19 const int N=105,mod=1e9+7; 20 ll n,k; 21 struct Matrix{ 22 int n;ll g[N][N]; 23 Matrix(){memset(g,0,sizeof(g));} 24 inline Matrix operator *(Matrix b){ 25 Matrix ans; 26 for(int i=1;i<=n;++i) 27 for(int j=1;j<=n;++j) 28 for(int k=1;k<=n;++k) 29 (ans.g[i][j]+=g[i][k]*b.g[k][j])%=mod; 30 ans.n=n; 31 return ans; 32 } 33 }x,res; 34 inline Matrix qpow(Matrix a,ll b){ 35 while(b){ 36 if(b&1) res=res*a; 37 a=a*a,b>>=1; 38 } 39 return res; 40 } 41 inline void print(Matrix x){ 42 int n=x.n; 43 for(int i=1;i<=n;++i){ 44 for(int j=1;j<=n;++j) printf("%d ",x.g[i][j]); 45 putchar(10); 46 } 47 } 48 int main(){ 49 //freopen("testdata.in","r",stdin); 50 n=read(),k=read(); 51 x.n=n; 52 for(int i=1;i<=n;++i) 53 for(int j=1;j<=n;++j) 54 x.g[i][j]=read(); 55 for(int i=1;i<=n;++i) res.g[i][i]=1;res.n=n; 56 print(qpow(x,k)); 57 return 0; 58 }
转载于:https://www.cnblogs.com/bztMinamoto/p/9593670.html
洛谷P3390 【模板】矩阵快速幂相关推荐
- 【洛谷P3390】 矩阵快速幂(模板)
贴一下矩阵快速幂的模板 #include<iostream> #include<cstdio> #include<cstring> #include<stri ...
- 洛谷 [P1593 因子和] {快速幂+费马小定理求逆元+求解质因子} 奋斗的珂珂~
题目描述 输入两个整数 a 和 b,求 aba^bab 的因子和. 由于结果太大,只要输出它对 9901 取模的结果. 输入格式 仅一行,为两个整数 a和 b. 输出格式 输出一行一个整数表示答案对 ...
- POJ3420 Quad Tiling(模板+矩阵快速幂)
Quad Tiling Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 4107 Accepted: 1878 Descripti ...
- 欧拉定理(洛谷-P5091)(十进制快速幂实现)
题目描述 给你三个正整数,a,m,b,你需要求:a^b mod m 输入输出格式 输入格式: 一行三个整数,a,m,b 对于全部数据: 1≤a≤10^9 1≤b≤10^{20000000} 1≤m≤1 ...
- 洛谷P3758/BZOJ4887 [TJOI2017] 可乐 [矩阵快速幂]
洛谷传送门,BZOJ传送门 可乐 Time Limit: 10 Sec Memory Limit: 64 MB Submit: 299 Solved: 207 Description 加里敦星球的 ...
- 快速幂和矩阵快速幂详解+模板
1.快速幂 一般的,我们都知道求只需要连续乘3次2就能得到,那么等于多少呢?其实这个一很简单,不就是13个2相乘吗,连续乘13次2就行了.那么,呢? 是不是要连续乘100次.1000次,我们将这类问题 ...
- POJ3070 矩阵快速幂模板
题目:http://poj.org/problem?id=3070 矩阵快速幂模板.mod写到乘法的定义部分就行了. 别忘了 I ( ) 和 i n i t ( ) 要传引用! #include< ...
- 43行代码AC_HDU-2604 Queuing(矩阵快速幂,附详细的知识讲解、模板例题)
一道经典的矩阵快速幂模板题. 传送门1-->快速幂基本思想 传送门2-->矩阵快速幂讲解(教主传授) 传送门3.1-->HDU-1575(经典矩阵快速幂模板题1) 传送门3.2--& ...
- 矩阵快速幂及斐波那契数列模板
本篇博客先给出矩阵快速幂以及利用矩阵快速幂求斐波那契数列的模板,讲解待更新-- const int N=10; int tmp[N][N]; void multi(int a[][N],int b[] ...
最新文章
- 没落的Ubuntu Touch想翻盘:新技术可运行Android应用
- mysql 拷贝记录吗_MySQL-复制记录和复制表
- 常用 API 函数(7): 位图、图标和光栅运算函数
- HTTPS实战之单向验证和双向验证
- 5.4、聚类之EM聚类实例
- 数据结构与算法分析(一)基础部分与算法分析方法
- 【LOJ3058】【HNOI2019】白兔之舞
- p1957口算题c语言,洛谷P1957口算练习题题解
- go:embed 的使用
- flask url_for()和redirect的区别
- MacBook使用HHKB键盘设置
- stick棍子by Ye
- pdps修改服务器,Tecnomatix PDPS二次开发功能介绍
- 网络空间技能大赛A模块(乱)
- 2021-03-18-8400
- 学习记录-视觉SLAM十四讲第2版(二)
- 【硬件调试-2】flir灰点相机usb设备权限设置,无法检测到设备
- NLP之依存句法分析(小白专栏学习之路)
- 【压缩感知合集1】(背景知识)香农奈奎斯特采样定理的数学推导和图解分析
- 是否可以将频谱分析仪当做网络分析仪使用?