Pagini recente » Cod sursa (job #1338262) | Cod sursa (job #1557738) | Cod sursa (job #1781606) | Cod sursa (job #2140342) | Cod sursa (job #1222026)
#include <iostream>
#include <iomanip>
#include <fstream>
#include <cstdio>
#include <cmath>
#include <cstring>
#include <vector>
#include <algorithm>
using namespace std;
#define MAX 100010
#define EPS 1e-10
int N, M;
long double A[305][305], Sol[305], X, Y, Ok;
void Solve(int K, int P) {
while (P <= M && abs(A[K][P]) < EPS) P++;
if (P > M) {
Ok = 1;
return;
}
X = A[K][P];
for (int j = P; j <= M+1; j++) A[K][j] *= -1/X;
for (int i = P+1; i <= N; i++) {
Y = A[i][K];
for (int j = P; j <= M+1; j++) {
A[i][j] = A[i][j] * 1/Y + A[K][j];
}
}
Solve(K+1,P+1);
Sol[P] = A[K][M+1];
for (int j = P+1; j <= M; j++) {
Sol[P] -= A[K][j] * Sol[j];
}
Sol[P] /= A[K][P];
}
int main() {
freopen("gauss.in","r",stdin);
freopen("gauss.out","w",stdout);
cin >> N >> M;
for (int i = 1; i <= N; i++)
for (int j = 1; j <= M+1; j++) {
cin >> A[i][j];
}
Solve(1,1);
if (Ok) {
cout << setprecision(10) << fixed;
for (int k = 1; k <= M; k++) cout << Sol[k] << " ";
} else {
cout << "Imposibil";
}
return 0;
}