文件详细信息

下载本文件

本文件的大小为 956 字节。

#include<algorithm>
#include<cmath>
#include<cstdio>
typedef double real;
const int maxn=55;
const real eps=1e-6;
int n;
real a[maxn][maxn];
int gauss(){
	int row,col;
	for(row=col=0;row<n;row++){
		int t=col;
		for(int i=col;i<n;i++)
			if(fabs(a[i][row])>fabs(a[t][row]))
				t=i;
		if(fabs(a[t][row])<eps)continue;
		for(int i=row;i<=n;i++)std::swap(a[t][i],a[col][i]);
		for(int i=n;i>=row;i--)a[col][i]/=a[col][row];
		for(int i=col+1;i<n;i++)
			if(fabs(a[i][row])>eps)
				for(int j=n;j>=row;j--)
					a[i][j]-=a[col][j]*a[i][row];
		col++;
	}
	for(int i=n-1;i>=0;i--)
		for(int j=i+1;j<n;j++)
			a[i][n]-=a[i][j]*a[j][n];
	if(col<n){
		for(int i=col;i<n;i++)
			if(fabs(a[i][n])>eps)
				return-1;
		return 0;
	}
	return 1;
}
int main(){
	scanf("%d",&n);
	for(int i=0;i<n;i++)
		for(int j=0;j<=n;j++)
			scanf("%lf",a[i]+j);
	int t=gauss();
	if(t==1)
		for(int i=0;i<n;i++)
			printf("x%d=%.2lf\n",i+1,a[i][n]);
	else printf("%d\n",t);
	return 0;
}