【高斯消元】整数高斯消元模板
来源:互联网 发布:淘宝盗用品牌怎么处理 编辑:程序博客网 时间:2024/05/31 19:11
#include <cstdio>#include <cstring>#include <iostream>using namespace std;const int MAXN = 100;int mabs(int u){return u>0?u:-u;}int gcd(int a,int b){ int c; while(b){ c = a; a = b; b = c%b; } return a;}struct Matrix{ int Ma[MAXN+10][MAXN+11]; int Ans[MAXN+10]; int n; void solve(){ int m = n+1, k=1; for(int i=1;i<=n;i++, k++){ int Maxp = i; for(int j=i+1;j<=n;j++) if(mabs(Ma[j][k]) > mabs(Ma[Maxp][k])) Maxp = j; if(Maxp != i) swap(Ma[Maxp], Ma[i]); for(int j=i+1;j<=n;j++){ if(Ma[j][k] != 0){ int lcm = Ma[j][k] * Ma[i][k] / gcd(Ma[j][k], Ma[i][k]); int bl = lcm / Ma[j][k], bl2 = lcm / Ma[i][k]; for(int p=1;p<=m;p++) Ma[j][p] = Ma[j][p] * bl - Ma[i][p] * bl2; } } } for(int i=n;i>=1;i--){ for(k=n;k>i;k--) Ma[i][m] -= Ma[i][k] * Ans[k]; Ans[i] = Ma[i][m] / Ma[i][i]; } }}M, Ym;int main(){ int n, m; scanf("%d%d", &n, &m); M.n = n; for(int i=1;i<=n;i++){ for(int j=1;j<=m;j++){ scanf("%d", &M.Ma[i][j]); } } M.solve(); for(int i=1;i<=n;i++) printf("%d\n", M.Ans[i]); return 0;}/*3 42 -1 3 14 2 5 42 0 2 6*/
0 0
- 【高斯消元】整数高斯消元模板
- 整数高斯消元模板
- 高斯消元整数消元模板
- 高斯消元模板——整数参数型
- 高斯消元(整数型)模板 && 高斯消元(实数型)模板 && 高斯消元(异或型)
- 大整数模板
- 超大整数加法模板
- 超大整数减法模板
- Java 大整数 模板
- 高精度整数模板
- 高精度整数模板(转)
- 大整数模板
- 大整数模板
- 整数划分模板
- 大整数减法模板
- java大整数模板
- 大整数类 模板
- 大整数模板
- Android targetSdkVersion 原理 如何选择 compileSdkVersion, minSdkVersion 和 targetSdkVersion
- Xilinx IP核使用(一)--FIFO
- 电子书:《Docker入门实战》
- 整数高斯消元模板
- ThinkPad R400 全系列官方恢复盘及官方分区工具
- 【高斯消元】整数高斯消元模板
- C++还能重新辉煌吗?C++复杂性的思考
- android-Activity Intent.setFlags()与launchMode
- nyoj 954
- ArcGIS教程:“表面体积”的工作原理
- python: 基于unittest 的动态加载和自动化测试探讨 (二)
- 渲梦工厂(3dmax插件)下载 v2.0.8中文版
- 自学QT之实现程序启动画面
- Vim实战指南(二):光标移动技巧