https://www.luogu.com.cn/record/200229924
#include<bits/stdc++.h>
using namespace std;
#define EPS 1e-8
int n;
double a[110][110];
int gauss(){
int r , c;
for (c = 0 , r = 0 ; c < n ; c++){
int t = r;
for (int i = r ; i < n ; i++){
if (fabs(a[i][c]) > fabs(a[t][c])){
t = i;
}
}
if (fabs(a[t][c]) < EPS) continue;
swap(a[t] , a[r]);
for (int i = n ; i >= c ; i--) a[r][i] /= a[r][c];
for (int i = r + 1 ; i < n ; i++){
if (fabs(a[i][c]) > EPS)
for (int j = n ; j >= c ; j--)
a[i][j] -= a[r][j] * a[i][c];
}
r++;
}
if (r < n){
for (int i = r ; i < n ; i++)
if (fabs(a[i][n]) > EPS)
return 2;
return 1;//无数解
}
for (int i = n - 1 ; i >= 0 ; i--){
for (int j = i + 1 ; j < n ; j++){
a[i][n] -= a[j][n] * a[i][j];
}
}
return 0;
}
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 == 0){
for (int i = 0 ; i < n ; i++) printf("x%d=%.2lf\n" , i , a[i][n]);
}
else if (t == 2) printf("-1\n");
else printf("0\n");
return 0;
}
printf("x%d=%.2lf\n" , i , a[i][n]);/*这不应该是printf("x%d=%.2lf\n" , i + 1 , a[i][n]);?*/