高斯消元模板
#include<bits/stdc++.h>
using namespace std;
const int N=100;
int n;
double eps=1e-5;
double mp[N][N];
inline bool check(double x,double y){
if(x>y) return 1;
return 0;
}
int main(){
cin>>n;
for(int i=1;i<=n;i++){
for(int j=1;j<=n+1;j++){
scanf("%lf",&mp[i][j]);
}
}
int fl=0;
for(int i=1;i<=n;i++){
int u=i;
for(int j=i+1;j<=n;j++){
if(check(mp[u][i],mp[j][i])) u=j;
}
if(u!=i) swap(mp[u],mp[i]);
if(mp[i][i]==0){
if(i<n||(mp[i][n+1])<eps) {
puts("0");return 0;
}
else {puts("-1");return 0;}
}
for(int j=1;j<=n;j++){
if(i==j) continue;
double div=mp[j][i]/mp[i][i];
for(int k=i+1;k<=n+1;k++){
mp[j][k]-=mp[i][k]*div;
}
}
}
double ans[N];
for(int i=1;i<=n;i++){
ans[i]=mp[i][n+1]/mp[i][i];
}
cerr<<fl;
for(int i=1;i<=n;i++){
if(fabs(ans[i])<=eps){
printf("x%d=%d\n",i,0);
}
else printf("x%d=%.2lf\n",i,ans[i]);
}
return 0;
}