//Code by Patcas Csaba #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define LL long long #define PII pair #define VB vector #define VI vector #define VD vector #define VS vector #define VPII vector > #define VVI vector < VI > #define VVB vector < VB > #define FORN(i, n) for(int i = 0; i < (n); ++i) #define FOR(i, a, b) for(int i = (a); i <= (b); ++i) #define FORD(i, a, b) for(int i = (a); i >= (b); --i) #define REPEAT do{ #define UNTIL(x) }while(!(x)); #define SZ size() #define BG begin() #define EN end() #define CL clear() #define X first #define Y second #define RS resize #define PB push_back #define MP make_pair #define ALL(x) x.begin(), x.end() #define IN_FILE "a.in" #define OUT_FILE "a.out" int n; VD sol; vector a, b; int main() { //Read data //freopen(IN_FILE, "r", stdin); //freopen(OUT_FILE, "w", stdout); cin >> n; b.RS(n + 1, VD(5)); FOR(i, 1, n) FOR(j, 1, 4) cin >> b[i][j]; a.RS(n + 1, VD(n + 1)); FOR(i, 1, n) { if (i < n) a[i + 1][i] = b[i][1]; a[i][i] = b[i][2]; if (i < n) a[i][i + 1] = b[i][3]; } //Solve //VI perm(n + 1); //FOR(i, 1, n) perm[i] = i; FOR(i, 1, n - 1) if (a[i + 1][i] != 0) { if (a[i][i] != 0) { double szorzo = - double(a[i + 1][i]) / a[i][i]; FOR(j, 1, n) a[i + 1][j] += a[i][j] * szorzo; b[i + 1][4] += b[i][4] * szorzo; } else { swap(a[i], a[i + 1]); swap(b[i], b[i + 1]); } } sol.RS(n + 1); sol[n] = b[n][4] / a[n][n]; FORD(i, n - 1, 1) { FORD(j, n, i + 1) b[i][4] -= a[i][j] * sol[j]; sol[i] = b[i][4] / a[i][i]; } //Write data FOR(i, 1, n) cout << sol[i] << endl; return 0; }