leminhkt

noname63(n equations system)

Jul 6th, 2020
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.02 KB | None | 0 0
  1. #include<bits/stdc++.h>
  2. using namespace std;
  3.  
  4. #define FOR(i, a, b) for(int i = a; i < b; i++)
  5. #define F0R(i, n)    FOR(i, 0, n)
  6. #define ROF(i, a, b) for(int i = b - 1; i >= a; i--)
  7. #define R0F(i, n)    ROF(i, 0, n)
  8. #define trav(i, a)   for(int &i : a)
  9.  
  10. template<typename T>inline T gcd (T a, T b) { while (b != 0) swap(b, a %= b); return a; }
  11. template<typename T>inline T lcm (T a, T b) { return a/gcd(a, b)*b; }
  12.  
  13. void fix(vector<vector<int>> &x, int n){
  14.     FOR(i, 1, n){
  15.         FOR(j, i, n){
  16.             int a = lcm(x[j][i - 1], x[i - 1][i - 1]),
  17.                 b = a/x[j][i - 1];
  18.             a = a/x[i - 1][i - 1];
  19.             FOR(l, i, n + 1)
  20.                 x[j][l] = b*x[j][l] - a*x[i - 1][l];
  21.         }
  22.     }
  23. }
  24.  
  25. vector<int> calc(vector<vector<int>> x, int n){
  26.     vector<int> res(n);
  27.     R0F(i, n){
  28.         res[i] = x[i][n];
  29.         FOR(j, i + 1, n) res[i] -= x[i][j]*res[j];
  30.         res[i] /= x[i][i];
  31.     }
  32.     return res;
  33. }
  34.  
  35. int main(){
  36.     int n; cin >> n;
  37.     vector<vector<int>> a(n, vector<int>(n + 1));
  38.     F0R(i, n)
  39.         F0R(j, n + 1)
  40.             cin >> a[i][j];
  41.     fix(a, n);
  42.     vector<int> ans = calc(a, n);
  43.     trav(i, ans) cout << i << ' ';
  44.     return 0;
  45. }
Add Comment
Please, Sign In to add comment