P3390矩阵快速幂
题目背景
矩阵快速幂
题目描述
给定n*n的矩阵A,求A^k
输入输出格式
输入格式:
第一行,n,k
第2至n+1行,每行n个数,第i+1行第j个数表示矩阵第i行第j列的元素
输出格式:
输出A^k
共n行,每行n个数,第i行第j个数表示矩阵第i行第j列的元素,每个元素模10^9+7
输入输出样例
2 1 1 1 1 1
1 1 1 1
说明
n<=100, k<=10^12, |矩阵元素|<=1000
//上板子! #include<iostream> #include<cstdio> #define ll long long #define mod 1000000007using namespace std; ll n,m; struct node {ll a[101][101]; }ans,base;ll init() {ll x=0,f=1;char c=getchar();while(c>'9'||c<'0'){if(c=='-')f=-1;c=getchar();}while(c>='0'&&c<='9'){x=x*10+c-'0';c=getchar();}return x*f; }node mul(node a,node b) {node res;for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){res.a[i][j]=0;for(int k=1;k<=n;k++)res.a[i][j]=(res.a[i][j]+a.a[i][k]*b.a[k][j])%mod;}return res; }node qw(node a,ll k) {node res=a;while(k){if(k&1) a=mul(a,res);res=mul(res,res);k>>=1;}return a; }int main() {n=init();m=init();for(int i=1;i<=n;i++)for(int j=1;j<=n;j++){ans.a[i][j]=init();}m--;ans=qw(ans,m);for (int i=1;i<=n;i++){for (int j=1;j<n;j++) printf("%d ",ans.a[i][j]);printf("%d\n",ans.a[i][n]);} }
算法:矩阵快速幂
转载于:https://www.cnblogs.com/L-Memory/p/6366930.html
P3390矩阵快速幂相关推荐
- 快速幂、快速乘、矩阵快速幂
文章目录 一 快速幂 模板 模板例题 二 快速乘 模板 三 矩阵快速幂 例题 模板题 应用题1 应用题2 一 快速幂 目的:当我们在求f(x) = a ^ x % mod时,f(x)的结果会呈指数型增 ...
- 洛谷P3390 【模板】矩阵快速幂
传送门 从今天开始学习矩阵快速幂.jpg 1 //minamoto 2 #include<iostream> 3 #include<cstdio> 4 #include< ...
- 【洛谷P3390】 矩阵快速幂(模板)
贴一下矩阵快速幂的模板 #include<iostream> #include<cstdio> #include<cstring> #include<stri ...
- 快速幂、矩阵快速幂、快速乘法
快速幂 快速幂是我们经常用到的一种算法,快速幂顾名思义就是快速的幂运算.我们在很多题目中都会遇到幂运算,但是在指数很大的时候,我们如果用for或者是pow就会超时,这时候就用到了快速幂. 快速幂的原理 ...
- 快速幂和矩阵快速幂详解+模板
1.快速幂 一般的,我们都知道求只需要连续乘3次2就能得到,那么等于多少呢?其实这个一很简单,不就是13个2相乘吗,连续乘13次2就行了.那么,呢? 是不是要连续乘100次.1000次,我们将这类问题 ...
- 矩阵快速幂+构造方法
与快速幂一样,可以将递推式通过二进制的方式来进行优化,这个学了快速幂就是十分容易理解 大概的板子如下: struct mat///自己定义大小的矩阵 {ll m[11][11]; }; mat mul ...
- 【做题】SRM701 Div1 Hard - FibonacciStringSum——数学和式&矩阵快速幂
原文链接 https://www.cnblogs.com/cly-none/p/SRM701Div1C.html 题意:定义"Fibonacci string"为没有连续1的01串 ...
- 快速幂 + 矩阵快速幂
快速幂 1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 #define LL lo ...
- HDU4549(矩阵快速幂+快速幂)
f(n)=a^f(n-1) + b^f(n-2):计算矩阵部分用矩阵快速幂:计算a的幂次和b的幂次用快速幂. #include<iostream> #include<algorith ...
最新文章
- 003 通过内存关系找万能按键call
- 【VMCloud云平台进阶篇】Monitor监控(一)
- 起步,停车——走好你的IT运维管理之路
- 教你学会Sql中 ROW_NUMBER的用法
- Python之字符串转换为日期、结合时区的日期操作
- CTF中常见Web源码泄露总结
- 从零开始学ios开发(三):第一个有交互的app
- nginx基于tcp负载均衡
- Windows XP 优化设置注册文件集合(共80项,请谨慎使用)
- PB导出数据excel格式dw2xls
- IT项目开发管理与绩效考核
- mouseenter鼠标事件
- 【Java开源项目】消息推送平台 日志引入
- java计算机毕业设计web智慧医疗平台设计与实现源码+mysql数据库+系统+lw文档+部署
- FMEA软件——什么时候启动FMEA?
- 笔记本/TK1安装ROS Indigo教程
- 四川大学计算机学院《数字逻辑(双语)》课程资源汇总
- 各iOS设备的iOS6越狱及降级现状
- 只是一个没有AI的单机版象棋
- 汤晓鸥:一位被人工智能事业耽误的“脱口秀大师”