https://www.luogu.com.cn/record/52279802
以及
#include<bits/stdc++.h>
using namespace std;
double a[110][110],b[110],Q;
int i,j,n,flag,FLAG,Flag[110];;
void Gauss(int t){
if (t>n) return ;
int i,j,k;
for (k=1;k<=n;k++)
if (a[k][t]!=0&&!Flag[k]) break;
if (!a[k][t]){flag=1;return ;}
Flag[k]=1;
for (i=1;i<=n;i++){
if (i==k||!a[t][t]) continue;
Q=a[i][t]/a[t][t];
for (j=t;j<=n+1;j++)
a[i][j]-=a[k][j]*Q;
}
Gauss(t+1);
b[t]=a[k][n+1]/a[k][t];
for (i=1;i<=n;i++)
a[i][n+1]-=a[i][t]*b[t],a[i][t]=0;
return ;
}
int main(){
scanf("%d",&n);
for (i=1;i<=n;i++)
for (j=1;j<=n+1;j++)
scanf("%lf",&a[i][j]);
Gauss(1);
if (flag){
for (i=1;i<=n;i++) FLAG|=a[i][n+1]!=0;
printf("%d\n",-FLAG);return 0;
}
for (i=1;i<=n;i++) printf("x%d=%.2f\n",i,b[i]);
return 0;
}