721. [SDOI2007] 线性方程组

★★   输入文件:gaess.in   输出文件:gaess.out   简单对比
时间限制:1 s   内存限制:128 MB

【问题描述】
已知 n 元线性一次方程组。

a1,1x1+a1,2x2+…+a1,nxn=b1
a2,1x1+a2,2x2+…+a2,nxn=b2
………………
an,1x1+an,2x2+…+an,nxn=bn
其中: n<=50.系数是整数,绝对值<=100 , bi的值都是正整数且<300。
编程任务:
根据输入的数据,编程输出方程组的解的情况。
【输入】(gaess.in)
第一行,未知数的个数。以下n行n+1列:分别表示每一格方程的系数及方程右边的值。
n
a1,1a1,2…a1,nb1
a2,1a2,2…a2,nb2
…………
an,1an,2…an,nbn
【输出】(gaess.out)
如果方程组无实数解输出−1 ;
如果有无穷多实数解,输出 0 ;
如果有唯一解,则输出解(小数点后保留两位小数,如果解是0,则不保留小数)
【样例输入】
3
2 -1 1 1
4 1 -1 5
1 1 1 0
【样例输出】

x1=1.00

x2=0

x3=-1.00

2017/03/22新加3组数据 by rapiz

/*高斯消元求解线性方程组*/
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cmath>
using namespace std;
#define N 100
#define eps (1e-8)
int n;double a[N][N];
int main(){
freopen("gaess.in", "r", stdin);
freopen("gaess.out", "w", stdout);
//freopen("cola.txt","r",stdin);
scanf("%d",&n);
for(int i=;i<=n;i++)for(int j=;j<=n+;j++)scanf("%lf",&a[i][j]);
for(int i=;i<=n;i++){
int p=i;
for(int j=i+;j<=n;j++)if(fabs(a[j][i])>fabs(a[p][i]))p=j;
for(int j=;j<=n+;j++)swap(a[p][j],a[i][j]);
if(fabs(a[i][i])<eps)continue;
double tmp=a[i][i];
for(int j=;j<=n+;j++)a[i][j]/=tmp;
for(int j=;j<=n;j++)
if(i!=j){
double tmp=a[j][i];
for(int k=;k<=n+;k++)a[j][k]-=a[i][k]*tmp;
}
}
int imp=,ult=;
for(int i=;i<=n;i++){
int j=;
while(fabs(a[i][j])<eps&&j<=n+)j++;
if(j>n+)ult=;
else if(j==n+)imp=;
}
if(imp){printf("-1");return ;}
if(ult){printf("");return ;}
for(int i=;i<=n;i++){
if(fabs(a[i][n+])<eps)printf("x%d=0\n",i);
else printf("x%d=%.2lf\n",i,a[i][n+]);
}
}

最新文章

  1. 第9章 Shell基础(2)_Bash基本功能
  2. MongoDB JAVA API Filters
  3. mysql 5.6到percona 5.6小版本升级
  4. Vi的基本使用方法
  5. vim全局替换
  6. Android传感器的使用(GravieySensor)
  7. 安全:加固你的ssh 登录
  8. Apache-rhel5.8环境下编译安装
  9. Bitmap 与ImageSource之间的转换
  10. zookeeper入门知识
  11. synchronized关键字
  12. iOS中 喷枪打字动画的实现
  13. Android 动态设置TextView的drawableLeft等属性
  14. job定时任务
  15. 【转】Java并发编程:同步容器
  16. 直播框架ijkplayer
  17. docker-compose 手工指定容器IP
  18. doris 0.9.0版本docker镜像制作与使用
  19. 货车运输(最大生成树+倍增LCA)
  20. codeforces776D The Door Problem

热门文章

  1. Redis shell
  2. centos下更换默认的python版本
  3. 《avascript 高级程序设计(第三版)》 ---第二章 在HTML中使用Javascript
  4. ThreadPoolExecutor线程池进阶使用
  5. eclipse的maven工程Dynamic Web Module 2.3 修改为3.0 解决办法
  6. listen 64
  7. win32com操作word(3):导入VBA常量
  8. poj1966Cable TV Network——无向图最小割(最大流)
  9. Vijos:P1234口袋的天空
  10. webAPP meta 标签大全