洛谷 P3390 [模板] 矩阵快速幂 题解

C# Socket网络通信UDP(关键字:Socket) 简单Socket-Udp通信 在本文中涉及到通信,仅做简单的通信(服务端接受消息,由客户端发出消息) 如有需要,根据需求可直接copy使用 关键字Socket 需要引用命名空间: using System.Net; using System.Net.Sockets; 服务端: using System; using System.Net; using System.Net.Sockets; u... 阅读详情

【模板】矩阵快速幂

题目背景

一个 m × n m \times n m×n 的矩阵是一个由 m m m 行 n n n 列元素排列成的矩形阵列。即形如

A = [ a 11 a 12 ⋯ a 1 n a 21 a 22 ⋯ a 2 n ⋮ ⋮ ⋱ ⋮ a m 1 a m 2 ⋯ a m n ] . A = \begin{bmatrix} a_{1 1} & a_{1 2} & \cdots & a_{1 n} \\ a_{2 1} & a_{2 2} & \cdots & a_{2 n} \\ \vdots & \vdots & \ddots & \vdots \\ a_{m 1} & a_{m 2} & \cdots & a_{m n} \end{bmatrix} \text{.} A= ​a11​a21​⋮am1​​a12​a22​⋮am2​​⋯⋯⋱⋯​a1n​a2n​⋮amn​​ ​.

本题中认为矩阵中的元素 a i j a_{i j} aij​ 是整数。

两个大小分别为 m × n m \times n m×n 和 n × p n \times p n×p 的矩阵 A , B A, B A,B 相乘的结果为一个大小为 m × p m \times p m×p 的矩阵。将结果矩阵记作 C C C,则

c i j = ∑ k = 1 n a i k b k j , ( 1 ≤ i ≤ m ,  1 ≤ j ≤ p ). c_{i j} = \sum_{k = 1}^{n} a_{i k} b_{k j} \text{,\qquad($1 \le i \le m$, $1 \le j \le p$).} cij​=k=1∑n​aik​bkj​,(1≤i≤m, 1≤j≤p).

而如果 A A A 的列数与 B B B 的行数不相等,则无法进行乘法。

可以验证,矩阵乘法满足结合律,即 ( A B ) C = A ( B C ) (A B) C = A (B C) (AB)C=A(BC)。

一个大小为 n × n n \times n n×n 的矩阵 A A A 可以与自身进行乘法,得到的仍是大小为 n × n n \times n n×n 的矩阵,记作 A 2 = A × A A^2 = A \times A A2=A×A。进一步地,还可以递归地定义任意高次方 A k = A × A k − 1 A^k = A \times A^{k - 1} Ak=A×Ak−1,或称 A k = A × A × ⋯ × A ⏟ k  次 A^k = \underbrace{A \times A \times \cdots \times A}_{k \text{ 次}} Ak=k 次 A×A×⋯×A​​。

特殊地,定义 A 0 A^0 A0 为单位矩阵 I = [ 1 0 ⋯ 0 0 1 ⋯ 0 ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ 1 ] I = \begin{bmatrix} 1 & 0 & \cdots & 0 \\ 0 & 1 & \cdots & 0 \\ \vdots & \vdots & \ddots & \vdots \\ 0 & 0 & \cdots & 1 \end{bmatrix} I= ​10⋮0​01⋮0​⋯⋯⋱⋯​00⋮1​ ​。

题目描述

给定 n × n n\times n n×n 的矩阵 A A A,求 A k A^k Ak。

输入格式

第一行两个整数 n , k n,k n,k。
接下来 n n n 行,每行 n n n 个整数,第 i i i 行的第 j j j 的数表示 A i , j A_{i,j} Ai,j​。

输出格式

输出 A k A^k Ak

共 n n n 行,每行 n n n 个数,第 i i i 行第 j j j 个数表示 ( A k ) i , j (A^k)_{i,j} (Ak)i,j​,每个元素对 1 0 9 + 7 10^9+7 109+7 取模。

样例 #1

样例输入 #1

2 1
1 1
1 1

样例输出 #1

1 1
1 1

提示

【数据范围】

对于 100 % 100\% 100% 的数据, 1 ≤ n ≤ 100 1\le n \le 100 1≤n≤100, 0 ≤ k ≤ 1 0 12 0 \le k \le 10^{12} 0≤k≤1012, ∣ A i , j ∣ ≤ 1000 |A_{i,j}| \le 1000 ∣Ai,j​∣≤1000。

原题

洛谷P3390——传送门

代码

#include <bits/stdc++.h>
using namespace std;
#define max_Heap(x) priority_queue<x, vector<x>, less<x>>
#define min_Heap(x) priority_queue<x, vector<x>, greater<x>>
typedef long long ll;
typedef unsigned long long ull;
typedef pair<int, int> PII;
typedef pair<long long, long long> PLL;
const double PI = acos(-1);

const int mod = 1e9 + 7; // 模数
struct Matrix            // 矩阵结构体
{
    ll m[106][106]; // 开longlong
};
Matrix a, e; // a输入矩阵,e单位矩阵
ll n, p;
Matrix Mul(Matrix x, Matrix y) // 矩阵相乘
{
    Matrix res;
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++)
            res.m[i][j] = 0;    //非全局定义的变量需初始化
    for (int i = 1; i <= n; i++)
        for (int j = 1; j <= n; j++)
            for (int k = 1; k <= n; k++)
            {
                res.m[i][j] += x.m[i][k] * y.m[k][j];
                res.m[i][j] %= mod;
            }
    return res;
}
Matrix qpow(Matrix x, ll y) // 矩阵快速幂
{
    Matrix res = e;
    while (y)
    {
        if (y & 1)
        {
            res = Mul(res, x);
        }
        x = Mul(x, x);
        y >>= 1;
    }
    return res;
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    // 输入
    cin >> n >> p;
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= n; j++)
        {
            cin >> a.m[i][j];
        }
    }
    // 单位矩阵初始化
    for (int i = 1; i <= n; i++)
    {
        e.m[i][i] = 1;
    }
    Matrix ans = qpow(a, p);
    // 输出
    for (int i = 1; i <= n; i++)
    {
        for (int j = 1; j <= n; j++)
        {
            if (j != n)
                cout << (ans.m[i][j] + mod) % mod << ' ';
            else
                cout << (ans.m[i][j] + mod) % mod << '\n';
        }
    }
    return 0;
}
CANOCO5.0实现冗余分析(RDA)最详细步骤 在地理及生态领域会常使用RDA分析,RDA的实现路径也有很多,今天介绍一下CANOCO软件的实现方法。1.不同样点和环境因子之间夹角是锐角 是正相关,是钝角是负相关。2.夹角越大 说明相关性较小,夹角越小,相关性越大。得有不同的物种或者样点数值,再加上环境因子数据。3.箭头越长 相关性越大。时间调整到2010年。 阅读详情

相关推荐

基于AI Agent的数据治理实战:从架构设计到企业级落地

数据治理是确保企业数据质量、一致性与安全性的核心实践,其核心原理在于通过规范、流程与技术工具对数据进行全生命周期管理。传统人工治理模式效率低下且难以规模化,而大语言模型(LLM)与智能体(Agent)技术的发展,为数据治理的自动化与智能化带来了突破。通过将自然语言理解、任务规划与工具调用能力相结合,AI Agent能够将治理规则“代码化”与“智能化”,实现从被动响应到主动发现的模式转变。在应用场景上,AI Agent可扮演智能数据专员角色,自动执行元数据问答、数据质量探查、口径对齐等任务,显著提升数据团队效

weixin_34008805的博客 418

洛谷-矩阵快速幂-(矩阵加速整理)

给你一个数列a,1

m0_52398496的博客 503

群晖设置公网ipv6方式域名解析访问

群晖、IPV6、域名解析

爬山虎的博客 2万+

P3390 【模板】矩阵快速幂

【代码】P3390 【模板】矩阵快速幂。

weixin_44021857的博客 107

从零构建锂电池主动均衡系统:Simulink仿真中的Buck-Boost拓扑实战指南

本文详细介绍了如何在Simulink中从零构建基于Buck-Boost拓扑的锂电池主动均衡系统。通过仿真环境搭建、参数优化、控制策略设计和性能评估,为工程师提供了完整的实战指南,帮助快速验证和优化均衡算法,提升电池组一致性与寿命。

gitlab7runner的博客 896

VASPKIT绘制平面平均电荷差分密度

平面平均密度差(planar-averaged electron density difference)是密度差的衍生。密度差是个三维空间函数,经常通过绘制平面图、等值面图方式图形化考察。虽然这两种图很直观,但平面图会受到截面选取的影响,而等值面图会受到等值面数值(isovalue)选取的影响,因此都有一定任意性,也不容易定量讨论。对于电子转移有比较明确方向的情况,可以绘制平面平均密度差曲线,由此可以清楚地考察垂直于选取的方向上每个截面上的密度差积分值,在定量讨论、对比上比较便利。

weixin_43948934的博客 1万+

洛谷 P3390:[模板] 矩阵快速幂

本算法代码是“矩阵快速幂”的模板代码。

hnjzsyjyj的专栏 768

Ollama部署本地大模型详细教程

创建ModelfilePARAMETER num_gpu 50 # GPU 层卸载比例(0~100)场景是否推荐本地开发/测试 Agent✅ 强烈推荐内部知识库问答(RAG)✅ 推荐(配合 Pgvector)生产环境高并发服务⚠️ 谨慎(建议评估 vLLM / Triton)需要 Function Calling 的 Agent❌ 不推荐(改用 DashScope API)🔑核心价值Ollama 是“本地大模型的 Docker”——让开源模型像容器一样 easy to run。

我们的征途是星辰大海 2616

【数论】1 矩阵快速幂(斐波那契)

讲述数论中的矩阵快速幂,用来优化递推或动态规划的复杂度,能大大增加程序在一定时间内的处理能力,其中还包含矩阵以及快速幂实现的相关数学内容

weixin_52163022的博客 1826

Oracle数据库安装及配置(Oracle19c)

Windows 10安装Oracle 19c教程

weixin_69200200的博客 2万+

全网最详细的 Ubuntu 18.04 安装Livox mid-360驱动,测试 fast_lio2

Livox mid-360需要使用Livox-SDK2,而非Livox-SDK,以及对应的。并需要修改FAST_LIO中部分代码。Faster—LIO;Faster-LIO:快速激光IMU里程计。Faster-LIO:快速激光IMU里程计PDF。大部分Lidar SLAM都是基于loam进行改造的,基本上是通过线特征edge和面特征(面点)分割进行配准得到里程计的,而fast-lio2是通过一个迭代扩展卡尔曼滤波器去优化帧内位姿,然后通过输入点云与地图进行配准得到里程计,精度和鲁棒性都不错。

努力努力努力 6235

矩阵快速幂入门笔记

作为一个因为极度畏惧数学 而选择成为一名OIer的蒟蒻 终于还是迎来了要面对的这一天 一般题目中矩阵运算好像只用到矩阵乘法 (或许只是蒟蒻我做的题太少) 而且矩阵的乘法也是较难理解的一部分 所以就简单讲讲矩阵乘法 如图 矩阵A*B就是用A的每一行依次乘B的每一列 具体就是A的第i行中每一个数对应相乘B的第j列每个数 每个相乘所得结果相加 最后放置于C矩阵的第i...

niiick 415

ansys 求解过程中出现未知错误。检查“求解信息”对象上的“求解器输出”,查找可能的原因。-静力学分析遇到的,这是什么原因——An unknown error occurred ——未找到解决方法

点击“确定”关闭弹窗后,进入Workbench的‌“求解信息”对象‌,查看‌“求解器输出”‌,搜索“Error”“Fatal”“Warning”等关键词,找到具体的错误描述,比如材料未定义、网格质量问题、内存不足等,这是精准解决问题的关键。进入“工具-选项-mechanical APDL”,取消勾选“分布式”,GPU加速器选择“none”。在“求解进程设置-高级”中调整内存分配参数,或切换为迭代求解器(如PCG求解器),它更省内存。尝试简化模型,比如删除非关键细节、合并重复部件,分步验证模型,定位问题源。

qq_15963745的博客 602

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

1.快速幂 一般的,我们都知道求只需要连续乘3次2就能得到,那么等于多少呢?其实这个一很简单,不就是13个2相乘吗,连续乘13次2就行了。那么,呢? 是不是要连续乘100次、1000次,我们将这类问题归结为求。那么当b很大的时候,是很浪费时间的,往往会造成超时,那有没有更快的计算方法呢?当然了,接下来就是这篇文章的重点:快速幂。 我们以b=13为例,将b表示为二进制:那么:那么我们观察只要b的...

ityanger的技术栈 1万+

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

洛谷 - P3390[模板]矩阵快速幂

题目链接:https://www.luogu.org/problemnew/show/P3390时空限制1000ms / 128MB 题目背景 矩阵快速幂 题目描述 给定n*n的矩阵A,求A^k. 输入格式 第一行,n,k; 第2至n+1行,每行n个数,第i+1行第j个数表示矩阵第i行第j列的元素 输出格式 输出A^k; 共n行,每行n个数,第i行第j个数表示矩阵第i行第j列的...

ityanger的技术栈 3015

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

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

洛谷 P3390 【模板】矩阵快速幂 Description 给定n*n的矩阵A,求A^k n<=100, k<=10^12, |矩阵元素|<=1000 Input 第一行,n,k 第2至n+1行,每行n个数,第i+1行第j个数表示矩阵第i行第j列的元素 Output 输出A^k 共n行,每行n个数,第i行第j个数表示矩阵第i行第j列的元素,每个元素模10^9...

aochongbi5356的博客 255

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

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

题目链接: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 输入输出样例 输入样例#1: 2 1 1 ...

Z_sea的博客 425

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

题目背景 矩阵快速幂 题目描述 给定 n\times nn×n 的矩阵 AA,求 A^kA k 。 输入格式 第一行两个整数 n,kn,k 接下来 nn 行,每行 nn 个整数,第 ii 行的第 jj 的数表示 A_{i,j}A i,j ​ 。 输出格式 输出 A^kA k 共 nn 行,每行 nn 个数,第 ii 行第 jj 个数表示 (A^k)_{i,j}(A k ) i,j ​ ,每个元...

待到山花烂漫时 513

【洛谷P3390】[模板]矩阵快速幂【矩阵乘法】

题目背景 linklinklink 矩阵快速幂 题目描述 给定 n×nn×nn×n 的矩阵 AAA,求 AkA^kAk 输入格式 第一行两个整数 n,k 接下来 n 行,每行 n 个整数,第 i 行的第 j 的数表示 Ai,jA i,jAi,j 输出格式 输出 AkA^kAk 共 n 行,每行 n 个数,第 i 行第 j 个数表示 (Ak)i,j(A^k)i,j(Ak)i,j ,每个元素对 109+710^9+7109+7取模。 输入输出样例 输入 #1 2 1 1 1 1 1 输出 #1 1 1 1 1

绫 451

【矩阵快速幂】- 洛谷 p3390 模板题 (补一道斐波那契数列)

矩阵快速幂 大意: 就是对矩阵求快速幂,将快速幂中res=1换成单位阵,而取模运算完全在我们定义的乘法运算中进行,即Mul,其他的跟快速幂没有区别,当然我现在只掌握了基础,所以做了一道模板题。 题目描述: 题目链接:洛谷-p3390 题目背景 矩阵快速幂 题目描述 给定n*n的矩阵A,求A^k 输入输出格式 输入格式: 第一行,n,k 第2至n+1行,每行n个数,第i+1行第j个数表示矩阵第i行第...

tran_sient的博客 530

洛谷P3390 矩阵快速幂模板

2020.6.16 最近要学数论和二分,数学工具必不可少。 矩阵快速幂昨天看到知乎有人讲到,今天做到一道需要用矩阵才能做的题就回来打打基础。矩阵快速幂就是矩阵链乘 + 快速幂运算。超级简单。唯一不友好的一点是cpp的矩阵类真的魔鬼,md python程序员要是来用cpp处理数据估计能气死了都。为了能让代码正常地跑起来牺牲了好多封装性了。气死我了。行吧就这样吧。 代码: #include <bits/stdc++.h> using namespace std; #define limit (100

Stagflation的博客 502

矩阵快速幂//洛谷P3390

第一行——咕咕咕。 第二行——啊啊啊啊啊啊啊我好饿啊好饿啊好饿啊好饿啊。饿到灵魂出窍。 矩阵快速幂其实就是在矩阵乘法的基础上运用了快速幂,不做过多解释。只需要注意矩阵的乘法是行元素列元素对应相乘相加生成新的矩阵即可。 应用: 利用矩阵快速幂求FibonacciPOJ3070,需要记住公式(一般会给的叭 本代码以洛谷P3390为例 先附题目链接洛谷P3390 这题是裸...

MoonLight_月亮 471

P1226 【模板】快速幂、P1045 [NOIP2003 普及组] 麦森数(高精度快速幂)、P3390 【模板】矩阵快速幂

定义了一个名为。

u014114223的博客 1181
上一篇: CF Educational Codeforces Round 164 Div.2 D. Colored Balls 题解
下一篇: Codeforces Round 869 Div.1 A. Almost Increasing Subsequence 题解
bbc_ouo
博客等级 码龄3年 2096粉丝 132原创
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值