#include<algorithm>
#include<cstdio>
#include<cmath>
#define eps 1e-6
double matrix[55][55];
int size;
inline int gauss(void){
int row=0,col=0;
for(;col<size;++col){
int top=row;
for(int iter=row;iter<size;++iter){
if(fabs(matrix[iter][col])>fabs(matrix[top][col])){
top=iter;
};
};
if(fabs(matrix[top][col])<eps){
continue;
};
for(int iter=col;iter<=size;++iter){
std::swap(matrix[top][iter],matrix[row][iter]);
};
for(int iter=size;iter>=col;--iter){
matrix[row][iter]/=matrix[row][col];
};
for(int first=row+1;first<size;++first){
if(fabs(matrix[first][col])>eps){
for(int second=size;second>=col;--second){
matrix[first][second]-=matrix[row][second]*matrix[first][col];
};
};
};
++row;
};
if(row<size){
for(int iter=row;iter<size;++iter){
if(fabs(matrix[iter][size])>eps){
return -1;
};
};
return 1;
};
for(int first=size-1;first>=0;--first){
for(int second=first+1;second<size;++second){
matrix[first][size]-=matrix[second][size]*matrix[first][second];
};
};
return 0;
};
int main(int,char**){
scanf("%d",&size);
for(int first=0;first<size;++first){
for(int second=0;second<=size;++second){
scanf("%lf",&matrix[first][second]);
};
};
int answer=gauss();
if(answer!=0){
printf("%d",answer);
}else{
for(int iter=0;iter<size;++iter){
printf("x%d=%.2lf\n",iter+1,matrix[iter][size]);
};
};
return 0;
};
在 infinity solution 的部分输出了 unique solution,80 分求条!