RT,高斯-约旦消元,求调
#include<bits/stdc++.h>
using namespace std;
#define MAXN 105
#define EPS 1e-6
double a[MAXN][MAXN],ans[MAXN];
int n,flag=1;
void gauss(){
for(int i=1;i<=n;i++){
int maxk=i;
for(int j=i+1;j<=n;j++){
if(fabs(a[j][i])>fabs(a[maxk][i])){
maxk=j;
}
}
for(int j=1;j<=n+1;j++){
swap(a[i][j],a[maxk][j]);
}
for(int j=1;j<=n;j++){
if(j!=i){
double del=a[j][i]/a[i][i];
for(int k=i+1;k<=n+1;k++){
a[j][k]-=a[i][k]*del;
}
}
}
}
for(int i=1;i<=n;i++){
a[i][n+1]/=a[i][i];
}
// return;
}
int main(){
std::ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
cin >> n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n+1;j++){
cin >> a[i][j];
}
}
gauss();
for(int i=1;i<=n;i++){
if(a[i][i]==0){
if(a[i][n+1]==0.0) flag=0;
else{
flag=-1;
cout << -1;
return 0;
}
}
}
if(flag==0){
cout << 0;
return 0;
}
for(int i=1;i<=n;i++){
printf("x%d=%.2lf\n",i,a[i][n+1]);
}
return 0;
}