intgauss(){ for (int i = 1; i <= n; ++i){ //第i主元 for (int k = i; k <= n; ++k){ if (fabs(a[k][i]) > eps){ swap(a[k], a[i]); break; } } //换非0行 if (fabs(a[i][i]) < eps){ return0; }
for (int j = n + 1; j >= i; j--){ a[i][j] /= a[i][i]; } // 变1
for (int k = i + 1; k <= n; k++){ for (int j = n + 1; j >= i; j--){ a[k][j] -= a[k][i] * a[i][j]; } } // 变0 } for (int i = n - 1; i >= 1; i--){ // 回代 for (int j = i + 1; j <= n; j++){ a[i][n + 1] -= a[i][j] * a[j][n + 1]; } } return1; // 存在唯一解 }
intmain(){ scanf("%d", &n); for (int i = 1; i <= n; i++){ for (int j = 1; j <= n + 1; j++){ scanf("%lf", &a[i][j]); } }
if (gauss()){ for (int i = 1; i < n + 1; i++){ printf("%.2lf\n", a[i][n + 1]); } } else{ puts("No Solution"); } return0; }