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

蓝桥杯练习系统(算法训练)ALGO-932 低阶行列式计算

资源限制

内存限制:64.0MB   C/C++时间限制:1.0s   Java时间限制:3.0s   Python时间限制:5.0s

问题描述

  给出一个n阶行列式(1<=n<=9),求出它的值。

输入格式

  第一行给出两个正整数n,p;
  接下来n行,每行n个数,表示行列式,数据保证行列式中每个数绝对值不超过2*10^9。

输出格式

  一个数表示行列式的值,答案对p取余(余数需要是非负数)。

样例输入

2 2
5 -4
2 -1

样例输出

1

部分数据范围

  对于20%的数据n<=2
  对于40%的数据n<=3
  对于100%的数据n<=9,p<=40000。

#include<iostream>
#include<math.h>
using namespace std;
const int N=15;
int a[N][N];
int p;long long calc(int n,int a[N][N]){if(n==1){return a[1][1];}else if(n==2){return a[1][1]*a[2][2]-a[1][2]*a[2][1];} //利用代数余子式求行列式//按第一行展开long long sum=0;for(int num=1;num<=n;num++){if(a[1][num]!=0){//等于0就不需要计算了 //求代数余子式int b_i=1;int b[N][N];for(int i=2;i<=n;i++){int b_j=1;for(int j=1;j<=n;j++){if(j!=num){b[b_i][b_j++]=a[i][j];}}b_i++;} int det=calc(n-1,b);sum+=pow(-1,1+num)*a[1][num]*det;sum%=p;}} return sum;
}
int main(){int n;cin>>n>>p;for(int i=1;i<=n;i++){for(int j=1;j<=n;j++){cin>>a[i][j];a[i][j]%=p;}}long long sum=calc(n,a);if(sum%p>=0){cout<<sum%p<<endl;}else{cout<<p+sum%p<<endl;}return 0;
} 

 思路:利用代数余子式求行列式的值。 

http://www.lryc.cn/news/356774.html

相关文章:

  • 四川古力未来科技抖音小店安全靠谱,购物新体验
  • 深入理解Seata:分布式事务的解决方案
  • 【TC8】如何测试IOP中PHY芯片的Llink-up time
  • java大学城水电管理系统源码(springboot)
  • LAMP源码编译安装——CentOS7
  • oracle 还原被覆盖的视图
  • go语言同一包中的同一变量实现不同平台设置不同的默认值 //go:build 编译语法使用示例
  • 校园周边美食探索及分享平台,基于 SpringBoot+Vue+MySQL 开发的前后端分离的校园周边美食探索及分享平台设计实现
  • Discourse 编辑没有办法显示更多的 JS 错误
  • CSS实现一个雨滴滑落效果
  • vue2+echarts地图下钻+地图遮盖物散点
  • 关于C++的特殊类定制
  • Linux备份脚本
  • 【Unity】实现轮盘抽奖
  • 面下对象之overload与override
  • 大数据之Hive函数大全
  • 宝塔下应该用 Memcached 还是 Redis?
  • 恢复视频3个攻略:从不同情况下的恢复方法到实践!
  • 从git上拉取项目进行操作
  • ES升级--01--环境准备和安装
  • Linux 防火墙 firewalld 常用命令
  • 时间|基于SprinBoot+vue的时间管理系统(源码+数据库+文档)
  • C++青少年简明教程:for循环语句
  • 自动驾驶技术现状与需求分析
  • SQL生成自然数,日历序列 浅析
  • 【数据结构(邓俊辉)学习笔记】二叉树04——Huffman树
  • arcgisPro将一个图层的要素复制到另一个图层
  • 难兄难弟——Java中 goto 与 const关键字
  • 如何优化大文件读取时的性能
  • 【机器学习】Chameleon多模态模型探究