浮点数高斯消元
int cur = 0;
for (int i = 0; i < n; ++i) {int p = cur;for (int j = cur + 1; j < n; ++j)if (abs(M[j][i]) > abs(M[p][i]))p = j;if (abs(M[p][i]) < EPS)continue;if (p != cur)for (int j = i; j <= n; ++j)swap(M[p][j], M[cur][j]);for (int j = n; j >= i; --j)M[cur][j] /= M[cur][i];for (int j = 0; j < n; ++j)if (j != cur)for (int k = n; k >= i; --k)M[j][k] -= M[j][i] * M[cur][k];++cur;
}
if (cur < n) {for (int i = cur; i < n; ++i)if (abs(M[i][n]) > EPS)return cout << -1 << '\n', 0;return cout << 0 << '\n', 0;
}
for (int i = 0; i < n; ++i)cout << "x" << i + 1 << "=" << M[i][n] << '\n';