Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<bits/stdc++.h>
- using namespace std;
- #define FOR(i, a, b) for(int i = a; i < b; i++)
- #define F0R(i, n) FOR(i, 0, n)
- #define ROF(i, a, b) for(int i = b - 1; i >= a; i--)
- #define R0F(i, n) ROF(i, 0, n)
- #define trav(i, a) for(int &i : a)
- template<typename T>inline T gcd (T a, T b) { while (b != 0) swap(b, a %= b); return a; }
- template<typename T>inline T lcm (T a, T b) { return a/gcd(a, b)*b; }
- void fix(vector<vector<int>> &x, int n){
- FOR(i, 1, n){
- FOR(j, i, n){
- int a = lcm(x[j][i - 1], x[i - 1][i - 1]),
- b = a/x[j][i - 1];
- a = a/x[i - 1][i - 1];
- FOR(l, i, n + 1)
- x[j][l] = b*x[j][l] - a*x[i - 1][l];
- }
- }
- }
- vector<int> calc(vector<vector<int>> x, int n){
- vector<int> res(n);
- R0F(i, n){
- res[i] = x[i][n];
- FOR(j, i + 1, n) res[i] -= x[i][j]*res[j];
- res[i] /= x[i][i];
- }
- return res;
- }
- int main(){
- int n; cin >> n;
- vector<vector<int>> a(n, vector<int>(n + 1));
- F0R(i, n)
- F0R(j, n + 1)
- cin >> a[i][j];
- fix(a, n);
- vector<int> ans = calc(a, n);
- trav(i, ans) cout << i << ' ';
- return 0;
- }
Add Comment
Please, Sign In to add comment