Pagini recente » Cod sursa (job #1849077) | Cod sursa (job #1722339) | Cod sursa (job #1995503) | Cod sursa (job #1366985) | Cod sursa (job #2885010)
#include <bits/stdc++.h>
#define ll long long
using namespace std;
ifstream fin ("gauss.in");
ofstream fout ("gauss.out");
const int INF = 1e9;
const int MOD = 1e9 + 7;
const double eps = 1e-5;
int n, m;
double x[302];
double a[302][302];
int main ()
{
ios_base::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
fin >> n >> m;
for (int i = 1; i <= n; i++)
for (int j = 1; j <= m + 1; j++)
fin >> a[i][j];
int eq = 1, var = 1;
while (eq <= n && var <= m) {
int k;
for (k = eq; k <= n; k++)
if (abs(a[k][var]) > eps)
break;
if (k == n + 1) {
var++;
continue;
}
if (eq != k)
for (int j = 1; j <= m + 1; j++)
swap(a[eq][j], a[k][j]);
double aux = a[eq][var];
for (int j = var; j <= m + 1; j++)
a[eq][j] /= aux;
for (int k = eq + 1; k <= n; k++) {
for (int j = var + 1; j <= m + 1; j++)
a[k][j] -= a[k][var] * a[eq][j];
a[k][var] = 0;
}
eq++;
var++;
}
for (int i = n; i; i--)
for (int j = 1; j <= m + 1; j++) {
if (abs(a[i][j]) > eps) {
if (j == m + 1) {
fout << "Imposibil";
return 0;
}
x[j] = a[i][m + 1];
for (int k = j + 1; k <= m; k++)
x[j] -= x[k + 1] * a[i][k];
break;
}
}
for (int i = 1; i <= m; i++)
fout << fixed << setprecision(6) << x[i] << " ";
return 0;
}