WA on #3 #7 #10
#include <bits/stdc++.h>
typedef long double ld;
using namespace std;
const ld eps = 1e-15;
const int N = 1e2 + 7;
ld a[N][N];
int n;
signed main() {
scanf("%d", &n);
for (int i = 1; i <= n; ++i)
for (int j = 1; j <= n + 1; ++j)
scanf("%LF", a[i] + j);
bool flag = false;
for (int i = 1; i <= n; ++i) {
int maxx = i;
for (int j = i + 1; j <= n; ++j)
if (fabs(a[j][i]) > fabs(a[maxx][i])) //选出该列最大系数
maxx = j;
for (int j = 1; j <= n + 1; ++j)
swap(a[i][j], a[maxx][j]);
if (fabs(a[i][i]) < eps)
return puts("-1"), 0;
for (int j = 1; j <= n; ++j)
if (j != i) {
ld c = a[j][i] / a[i][i];
for (int k = i + 1; k <= n + 1; ++k)
a[j][k] -= a[i][k] * c;
}
}
for (int i = 1; i <= n; ++i)
if (fabs(a[i][i]) < eps && fabs(a[i][n + 1]) < eps)
return puts("0"), 0;
for (int i = 1; i <= n; ++i)
printf("x%d=%.2LF\n", i, fabs(a[i][n + 1] / a[i][i]) < eps ? 0 : a[i][n + 1] / a[i][i]);
return 0;
}