Pagini recente » Cod sursa (job #2546622) | Cod sursa (job #49604) | Cod sursa (job #3183274) | Cod sursa (job #578411) | Cod sursa (job #1952113)
#include <bits/stdc++.h>
using namespace std;
const double eps = 1e-6;
const int Nmax = 303;
int n, m, i, j, k, p[Nmax];
long double coef, a[Nmax][Nmax], ans[Nmax];
int main()
{
freopen("gauss.in", "r", stdin);
freopen("gauss.out", "w", stdout);
scanf("%d%d", &m, &n);
for(i=1; i<=m; ++i)
for(j=1; j<=n+1; ++j)
scanf("%lf", &a[i][j]);
for(i=1; i<=m; ++i)
{
for(j=1; j<=n+1; ++j)
if(fabs(a[i][j]) > eps) break;
if(j==n+2) continue;
if(j==n+1)
{
printf("Imposibil\n");
return 0;
}
p[i] = j;
for(j=1; j<=m; ++j)
if(i!=j)
{
coef = (1.0L*a[j][p[i]]) / (1.0L*a[i][p[i]]);
for(k=1; k<=n+1; ++k)
a[j][k] -= 1.0L* coef * a[i][k];
}
}
for(i=1; i<=m; ++i) if(p[i]) ans[p[i]] = a[i][n+1] / a[i][p[i]];
for(i=1; i<=n; ++i) printf("%.10lf ", ans[i]);
}