尧图网站建设 尧图网络
  • 首页
  • 关于我们
  • 服务项目
  • 案例展示
  • 建站流程
  • 资讯中心
  • 联系我们
首页/资讯中心/详情

【题解】Luogu P10502 Matrix Power Series

【题解】Luogu P10502 Matrix Power Series
📅 发布时间:2026/6/19 9:56:10

题意分析

给定一个 \(n \times n\) 的矩阵 \(A\) 和正整数 \(k\),求 \(S=A^1+A^2+\cdots+A^k\)。

解题思路

求 \(A^n\) 要用到矩阵快速幂。但是 \(k \le 10^9\),求 \(k\) 个幂会超时,所以需要用到分治的策略。

我们知道,矩阵乘法满足乘法分配律,即 \(A \times C + B \times C = (A + B) \times C\)。那么我们就可以二分 \(k\),\(A^{mid+1}\) 加到 \(A^r\) 就等于 \(A^l\) 加到 \(A^{mid}\) 乘 \(A^{\frac{r-l+1}{2}}\)。当 \((r-l+1)\) 是偶数即 \(l\) 到 \(r\) 之间的项数为偶数时,求 \(A^l\) 加到 \(A^{mid}\) 乘 \(A^{\frac{r-l+1}{2}}\) 再加 \(A^l\) 加到 \(A^{mid}\),而求 \(A^l\) 加到 \(A^{mid}\) 时可以继续二分,直到 \(l=r\) 为止。当 \((r-l+1)\) 是奇数时,我们把多出来的一项单独求(这里选择第 \(l\) 项),剩下的用二分求。如此一来时间复杂度就会压缩到 \(O(\log k)\)。

写一个简单的递归即可。

代码实现

#include<iostream>
#include<cstring>
#define int long long 
using namespace std;
struct Matrix{int mx[110][110];
}a,s,c;
int n,m,k;
Matrix operator *(const Matrix &a,const Matrix &b){//运算符重载为矩阵乘法 memset(c.mx,0,sizeof(c.mx));for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){for(int d=1;d<=n;d++){c.mx[i][j]=(c.mx[i][j]+(a.mx[i][d]*b.mx[d][j])%m)%m;}}}return c;
}
Matrix operator +(const Matrix &a,const Matrix &b){//运算符重载为矩阵加法 memset(c.mx,0,sizeof(c.mx));for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){c.mx[i][j]=(a.mx[i][j]+b.mx[i][j])%m;}}return c;
}
Matrix ksm(Matrix a,int k){//快速幂 Matrix d,e=a;memset(d.mx,0,sizeof(d.mx));for(int i=1;i<=n;i++) d.mx[i][i]=1;while(k){if(k&1) d=d*e;e=e*e;k>>=1;}return d;
}
Matrix sum(int l,int r){//二分 if(l==r){return ksm(a,l);}if((r-l+1)%2==0){int mid=(l+r)/2;Matrix x=ksm(a,mid+1-l),y=sum(l,mid);return y+y*x;}else{return sum(l,l)+sum(l+1,r);}
}
signed main(){cin>>n>>k>>m;for(int i=1;i<=n;i++) s.mx[i][i]=1;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cin>>a.mx[i][j];a.mx[i][j]%=m;}}s=sum(1,k);for(int i=1;i<=n;i++){for(int j=1;j<=n;j++) cout<<s.mx[i][j]<<" ";cout<<endl;}return 0;
}

注意事项

记得随时取余 \(m\)。

相关新闻

  • SpringBoot 企业级接口加密【通用、可配置、解耦的组件】「开闭原则+模板方法+拦截器/中间件模式」
  • 【题解】Luogu P5175 数列
  • 论文AI率90%→5%!DeepSeek四大降ai率指令+3款神器实测(保姆级教程)

最新新闻

  • 绍兴上虞区黄金回收五维测评与机构亮点解析 - 上门黄金回收
  • 2026荆门黄金回收白银回收铂金回收门店+工商公安双备案+中检认证商家推荐 - 诚金汇钻回收公司
  • 2026淮北黄金回收白银回收铂金回收门店+工商公安双备案+中检认证商家推荐 - 诚金汇钻回收公司
  • Mapbox GL JS 3.25.0 发布:多项功能改进与错误修复,提升性能与稳定性
  • 2026北京本地人必选防水补漏检测维修公司靠谱服务商TOP5推荐:房屋渗漏水检测维修/卫生间/厨房/天花板/阳台/外墙渗漏水检测补漏维修-暗管漏水检测专业仪器精准定位漏水点 - 即刻修防水
  • 网上登报挂失流程是什么?网上登报挂失费用是多少?

日新闻

  • 5分钟掌握Python进化算法:Geatpy高性能优化工具完全指南
  • Microchip 24AA044 EEPROM选型与应用全指南:从参数解析到实战编程
  • 华为的鸿蒙到底有多牛?为什么称作遥遥领先?

周新闻

  • 3步解锁iOS设备:applera1n激活锁绕过完全指南
  • 39 2026 人工智能证书终极盘点,普通人选 AI 证书可以从这些方向入手
  • Redis 暴露公网有多危险?从端口检查到补救步骤

月新闻

  • 【总结】入门篇:50句话让你记住架构核心概念
  • WeChatMsg技术方案解析:实现Mac微信数据自主管理的完整解决方案
  • WeChatMsg:革新性微信数据备份方案,打造你的专属数字记忆库

关于尧图

  • 公司简介
  • 团队介绍
  • 企业文化
  • 荣誉资质

服务项目

  • 定制开发
  • 电商建站
  • UI 设计
  • 运维服务

快速链接

  • 案例展示
  • 建站流程
  • 常见问题
  • 资讯中心

联系方式

  • 📍北京市朝阳区互联网产业园 A 座 10 层
  • 📞400-888-8888
  • ✉️contact@rkmt.cn
  • 🕐周一至周日 9:00-21:00

© 2024 北京尧图网络科技有限公司 版权所有 | 京 ICP 备 XXXXXXXX 号