题目背景

矩阵快速幂

题目描述

给定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

输入输出样例

输入样例#1:

2 1
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. 快速幂、快速乘、矩阵快速幂

    文章目录 一 快速幂 模板 模板例题 二 快速乘 模板 三 矩阵快速幂 例题 模板题 应用题1 应用题2 一 快速幂 目的:当我们在求f(x) = a ^ x % mod时,f(x)的结果会呈指数型增 ...

  2. 洛谷P3390 【模板】矩阵快速幂

    传送门 从今天开始学习矩阵快速幂.jpg 1 //minamoto 2 #include<iostream> 3 #include<cstdio> 4 #include< ...

  3. 【洛谷P3390】 矩阵快速幂(模板)

    贴一下矩阵快速幂的模板 #include<iostream> #include<cstdio> #include<cstring> #include<stri ...

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

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

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

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

  6. 矩阵快速幂+构造方法

    与快速幂一样,可以将递推式通过二进制的方式来进行优化,这个学了快速幂就是十分容易理解 大概的板子如下: struct mat///自己定义大小的矩阵 {ll m[11][11]; }; mat mul ...

  7. 【做题】SRM701 Div1 Hard - FibonacciStringSum——数学和式&矩阵快速幂

    原文链接 https://www.cnblogs.com/cly-none/p/SRM701Div1C.html 题意:定义"Fibonacci string"为没有连续1的01串 ...

  8. 快速幂 + 矩阵快速幂

    快速幂 1 #include<iostream> 2 #include<algorithm> 3 #include<cstring> 4 #define LL lo ...

  9. HDU4549(矩阵快速幂+快速幂)

    f(n)=a^f(n-1) + b^f(n-2):计算矩阵部分用矩阵快速幂:计算a的幂次和b的幂次用快速幂. #include<iostream> #include<algorith ...

最新文章

  1. 003 通过内存关系找万能按键call
  2. 【VMCloud云平台进阶篇】Monitor监控(一)
  3. 起步,停车——走好你的IT运维管理之路
  4. 教你学会Sql中 ROW_NUMBER的用法
  5. Python之字符串转换为日期、结合时区的日期操作
  6. CTF中常见Web源码泄露总结
  7. 从零开始学ios开发(三):第一个有交互的app
  8. nginx基于tcp负载均衡
  9. Windows XP 优化设置注册文件集合(共80项,请谨慎使用)
  10. PB导出数据excel格式dw2xls
  11. IT项目开发管理与绩效考核
  12. mouseenter鼠标事件
  13. 【Java开源项目】消息推送平台 日志引入
  14. java计算机毕业设计web智慧医疗平台设计与实现源码+mysql数据库+系统+lw文档+部署
  15. FMEA软件——什么时候启动FMEA?
  16. 笔记本/TK1安装ROS Indigo教程
  17. 四川大学计算机学院《数字逻辑(双语)》课程资源汇总
  18. 各iOS设备的iOS6越狱及降级现状
  19. 只是一个没有AI的单机版象棋
  20. 汤晓鸥:一位被人工智能事业耽误的“脱口秀大师”

热门文章

  1. TensorFlow精选Github开源项目
  2. 窄带信号和宽带信号的区别和联系
  3. 华为机试题1:计算字符串最后一个单词的长度,单词以空格隔开。
  4. 025_JDK的hashCode方法
  5. 009-Joran配置框架
  6. u盘扩容软件_扩容盘的认识与检测和量产还原
  7. python中randn函数_numpy常用函数之randn
  8. 如何查看tomcat是否安装成功_如何查看网站是否被收录?
  9. 电脑前面的插孔没声音怎么设置_手机没声音是怎么回事
  10. 分站实现php,php城市分站是什么原理