题目描述

已知n元线性一次方程组。

其中:n<=50, 系数是[b][color=red]整数<=100(有负数),bi的值都是整数且<300(有负数)(特别感谢U14968 mmqqdd提出题目描述的说明)(redbag:是mqd自己要我写的= =)[/color][/b].

编程任务:

根据输入的数据,编程输出方程组的解的情况。

输入输出格式

输入格式:

第一行:未知数的个数。以下n行n+1列:分别表示每一格方程的系数及方程右边的值。

输出格式:

如果方程组无实数解输出-1;

如果有无穷多实数解,输出0;

如果有唯一解,则输出解(小数点后保留两位小数)。

输入输出样例

输入样例#1:
复制

3
2 -1 1 1
4 1 -1 5
1 1 1 0
输出样例#1: 复制

x1=1.00
x2=0
x3=-1.00


这个高斯消元的板子略恶心。
我发现我写了一辈子的错的高斯消元,现在感觉很是不好233.


#include <iostream>
#include <cstdio>
#include <queue>
#include <cmath>
using namespace std;
#define reg register
inline int read() {
int res = ;char ch=getchar();
while(!isdigit(ch)) ch=getchar();
while(isdigit(ch)) res=(res<<)+(res<<)+(ch^), ch=getchar();
return res;
} int n;
double a[][];
double ans[]; inline void Gauss()
{
for (reg int i = ; i <= n ; i ++)
{
int piv = i;
for (reg int j = i + ; j <= n ; j ++)
if (fabs(a[piv][i]) < fabs(a[j][i])) piv = j;
if (piv != i)
for (reg int j = ; j <= n + ; j ++)
swap(a[piv][j], a[i][j]);
if (fabs(a[i][i]) < 1e-) continue;
double div = a[i][i];
for (reg int j = ; j <= n + ; j ++) a[i][j] /= div;
for (reg int j = ; j <= n ; j ++)
if (i != j) {
div = a[j][i];
for (reg int k = ; k <= n + ; k ++)
a[j][k] -= div * a[i][k];
}
}
} int main()
{
n = read();
for (reg int i = ; i <= n ; i ++)
for (reg int j = ; j <= n + ; j ++)
scanf("%lf", &a[i][j]);
Gauss();
bool opt1 = ;
bool opt2 = ;
for(int i = ; i <=n ; i ++){
int j = ;
while (fabs(a[i][j]) < 1e- and j <= n + ) j++;
if(j > n + ) opt1 = ;
else if(j == n + ) opt2 = ;
}
if(opt2) {
printf("-1");
return ;
}
if(opt1) {
printf("");
return ;
}
for (reg int i = n ; i >= ; i --)
{
ans[i] = a[i][n+];
for (reg int j = i - ; j >= ; j --)
{
a[j][n+] -= ans[i] * a[j][i];
a[j][i] = ;
}
}
for (reg int i = ; i <= n ; i ++)
if (fabs(ans[i]) < 1e-) printf("x%d=0\n", i);
else printf("x%d=%.2lf\n", i, ans[i]);
return ;
}

[Luogu2455] [SDOI2006]线性方程组的更多相关文章

  1. luogu2455 [SDOI2006]线性方程组 高斯消元法

    #include <iostream> #include <cstdio> #include <cmath> using namespace std; int n, ...

  2. Luogu2455 [SDOI2006]线性方程组 (高斯消元)

    模板特殊情况没exit(0) $\longrightarrow$60 了一下午 //#include <iostream> #include <cstdio> #include ...

  3. P2455 [SDOI2006]线性方程组(real gauss)

    P2455 [SDOI2006]线性方程组 (upd 2018.11.08: 这才是真正的高斯消元模板) 找到所消未知数(设为x)系数最大的式子,把它提上来 把这个式子的 x 系数约成1 把这个式子用 ...

  4. P2455 [SDOI2006]线性方程组

    P2455 [SDOI2006]线性方程组 真\(\cdot\)高斯消元模板题 由于各种hack数据被造出来~码量突增~,其实也就多了二三十行 将每行系数消到最多有一个非0数 特殊情况: 在过程同时 ...

  5. 【luogu P2455 [SDOI2006]线性方程组】 题解

    题目链接:https://www.luogu.org/problemnew/show/P2455 无解:最后一列对应元素不为0,前面全是0. 无穷解:一行全是0. 嗯...在消元过程中不要直接拿矩阵元 ...

  6. Luogu P2455 [SDOI2006]线性方程组 真•高斯消元板子

    果然如Miracle学长所说...调了一天...qwq..还是过不了线下的Hack upd after 40min:刚刚过了 就是多了一个判无解的操作... 当系数都为0,且常数项不为0时,即为无解. ...

  7. 洛谷P2455 [SDOI2006]线性方程组(高斯消元)

    题目描述 已知n元线性一次方程组. 其中:n<=50, 系数是[b][color=red]整数<=100(有负数),bi的值都是整数且<300(有负数)(特别感谢U14968 mmq ...

  8. 洛谷P2455 [SDOI2006]线性方程组

    高斯消元模板 要求输出解的情况(无穷解/无解) 1. 之前写的丑陋代码 #include <iostream> #include <cstdio> #include <c ...

  9. [SDOI2006] 线性方程组

    洛谷 P2455 传送门 刚开始写了个消成上三角的,结果狂wa. 后来经过研究发现,消成上三角那种不能直接判断无解或无穷多解,需要其它的操作. 所以干脆学了个消成对角线的,写了一发A了. 其实两种消元 ...

随机推荐

  1. opencv边缘检测报错

    cnts = cv2.findContours(edged_image.copy(), cv2.RETR_LIST, cv2.CHAIN_APPROX_SIMPLE)cnts = cnts[0] if ...

  2. jsp作用域总结

    我们在定义每一个变量,每一个属性的时候,都会考虑这个变量.属性的作用范围,也就是作用域. JSP的四大作用域 作用域对象 作用域范围 page 只在当前页面有效 request 一次请求的生命周期内有 ...

  3. Android服务之混合方式开启服务

    引言 前面介绍过了Android服务的两种开启方式:Start方式可以让服务在后台运行:bind方式能够调用到服务中的方法. 在实际的开发工作中,有很多需求是:既要在后台能够长期运行,又要在服务中操作 ...

  4. [C++] 头文件中的#ifndef,#define,#endif以及#pragma用法

    想必很多人都看过“头文件中用到的 #ifndef/#define/#endif 来防止该头文件被重复引用”.但是是否能理解“被重复引用”是什么意思?头文件被重复引用了,会产生什么后果?是不是所有的头文 ...

  5. java架构之路-(分布式)初识zookeeper安装与参数详解

    ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件.它是一个为分布式应用提供一致性服务的软件,提供的功 ...

  6. Windows10安装多个版本的PostgreSQL数据库,但是均没有自动注册Windows服务的解决方法

    1.确保正确安装了PostgreSQL数据库,注意端口号不能相同 我的安装目录如图: 其中9.6版本的端口号为5432,10版本的端口号为5433,11版本的端口号为5434.若不知道端口号,可在Po ...

  7. linux 配置多个tomcat

    一.安装tomcat 1.下载链接:https://tomcat.apache.org/download-70.cgi,选择需要的版本下载(.tar.gz文件后缀) 2.通过Xshell.Xftp上传 ...

  8. Java 内存模型与内存结构

    Java内存模型 一.简介 Java内存模型(JMM)主要是为了规定线程和内存之间的一些关系:根据JMM的设计,系统存在一个主内存(Main Memory)和工作内存(Work Memory),Jav ...

  9. Hyper-V安装CentOS 8问题

    CentOS 8 已经发布很长时间了,作为一直折腾Linux虚拟机的一员怎么少的了我. 环境&准备工作 系统:Win 10 pro 19H1 虚拟机:Hyper-V ISO:CentOS 8 ...

  10. 快学Scala 第十七课 (trait 入门)

    trait 入门: trait类似于java的接口,不过比java接口功能更强大,可以有实体成员,抽象成员,实体方法,抽象方法. 如果需要混入的特质不止一个用with关键字. 带有特质的对象:(特质可 ...