当前位置: 首页 > article >正文

方阵幂次(矩阵快速幂)

#include <bits/stdc++.h>
using namespace std;

int n;
vector<vector<int>> fuc(vector<vector<int>> a,vector<vector<int>> b){ // 矩阵乘法函数
  vector<vector<int>> f(n,vector<int>(n));
  for(int i=0;i<n;i++){
    for(int j=0;j<n;j++){
      for(int k=0;k<n;k++){
        f[i][j]+=a[i][k]*b[k][j];
      }
    }
  }
  return f;
}

int main()
{
  int m;cin>>n>>m;
  vector<vector<int>> a(n,vector<int>(n));
  for(int i=0;i<n;i++){
    for(int j=0;j<n;j++){
      cin>>a[i][j];
    }
  }

  vector<vector<int>> ans(n, vector<int>(n, 0));
  for (int i = 0; i < n; i++) {
        ans[i][i] = 1;  // 单位矩阵
    }
  while(m){ // 快速幂算法
    if(m&1) ans=fuc(ans,a);
    a=fuc(a,a);
    m>>=1;
  }
  for(int i=0;i<n;i++){
    for(int j=0;j<n;j++){
      cout<<ans[i][j]<<" ";
    }
    cout<<endl;
  }
  return 0;
}

矩阵乘法函数 fuc 用vector可以作为矩阵返回值

ans 要初始化为一个单位矩阵

然后用快速幂计算 结果


http://www.kler.cn/a/613403.html

相关文章:

  • 面试的时候问到了HTML5的新特性有哪些
  • 使用 rsync 进行服务器文件同步与优化
  • E5071C数据保存教程:SNP文件/CSV导出+远程传输步骤一键收藏
  • 详细介绍ASSERT()
  • Go 语言标准库中strings和strconv详细功能介绍与示例
  • vue3 vue-router 传递路由参数
  • .netCore的winform程序如何调用webapi
  • 树莓派超全系列文档--(11)RaspberryOS上使用 Python控制GPIO
  • 全面解析PRN文件:从原理到可视化的完整指南 【标签打印】
  • 1.1-站点差异\源码差异\数据存储差异\MVC模型
  • python每日十题(13)
  • 使用Django创建项目及介绍
  • knowledge-vscode中配置java环境(JDK-8下载,配置 Maven 并创建项目)
  • 从系统架构、API对接核心技术、业务场景设计及实战案例四个维度,深度解析1688代采系统
  • 微服务中的服务发现与注册中心
  • Rabbitmq消息被消费时抛异常,进入Unacked 状态,进而导致消费者不断尝试消费(下)
  • 实现类今日头条主界面:ViewPager与TabLayout深度整合
  • 【空间变换】欧拉角与四元数
  • SQL的核心基础语法 | 快速入门MySQL
  • 【算法手记6】NC1 大数加法 NC40 链表相加(二) NC10 大数乘法