记录编号 425334 评测结果 AAAAAAAAAAAAA
题目名称 [SDOI 2007] 线性方程组 最终得分 100
用户昵称 GravatarNarcissus 是否通过 通过
代码语言 C++ 运行时间 0.003 s
提交时间 2017-07-15 08:22:44 内存使用 0.34 MiB
显示代码纯文本
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
inline int read(){
    int s=0,f=1;char ch=getchar();
    while(ch<'0'||ch>'9'){if(ch=='-')f=-1;ch=getchar();}
    while(ch>='0'&&ch<='9'){s=(s<<1)+(s<<3)+ch-'0';ch=getchar();}
    return s*f;
}
double s[55][55],eps=1e-8;
int n;
bool inf[55];
inline void gs(){
  int i,j,k,r;
  for(i=1;i<=n;++i) {
    r=i;
    for(j=i+1;j<=n;++j)
      if (fabs(s[j][i])>fabs(s[r][i])) r=j;
    if(fabs(s[r][i])<eps) continue;
    if(r!=i) for(j=1;j<=n+1;++j) swap(s[r][j],s[i][j]);
    for(k=1;k<=n;++k) if(k!=i)
      for(j=n+1;j>=i;--j) s[k][j]-=s[k][i]/s[i][i]*s[i][j];
  }
}
int main(){
	freopen("gaess.in","r",stdin);
	freopen("gaess.out","w",stdout);
	n=read();
	for(int i=1;i<=n;++i) for(int j=1;j<=n+1;++j) s[i][j]=read();
	gs();
	//无解:(0,0,0,0,.....,a)
	for(int i=n;i>=1;--i)if(fabs(s[i][n+1])>eps){
		int js=0;
		for(int j=1;j<=n;++j) if(fabs(s[i][j])<eps) js++;
		if(js==n) {cout<<-1; return 0;}
	} 
	//无穷解  全0 或者s[i][i]=0,s[i][n+1]!=0 
	for(int i=n;i>=1;--i){
		int js=0;
		for(int j=1;j<=n+1;++j) if(fabs(s[i][j])<eps) js++;
		if(js==n+1) {cout<<0; return 0;}
	}
	for(int i=1;i<=n;++i) if(fabs(s[i][i])<eps&&fabs(s[i][n+1])>eps){
		cout<<0;return 0;
	}
	for(int i=1;i<=n;++i) {
		if(s[i][n+1]==0) printf("x%d=%d\n",i,0);
		else printf("x%d=%.2lf\n",i,s[i][n+1]/s[i][i]);
	}
}