Advertisement
fahad005

b.cpp

Jun 25th, 2021
414
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.94 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. //
  4. #define ll long long
  5. #define ull unsigned long long
  6. #define pb push_back
  7. #define mx 100010
  8. #define mod 1000000007
  9. #define inf INT_MAX
  10. #define pi acos(-1)
  11. #define endl '\n'
  12. #define fin freopen("input", "r", stdin)
  13. #define Fast ios_base::sync_with_stdio(false);cin.tie(0);cout.tie(0)
  14. //
  15. #define MAX 10000000
  16. vector<ll> v;
  17. set<ll> se, se1;
  18.  
  19. void sieve()
  20. {
  21.     vector<bool> isprime(MAX, 1);
  22.     for (int i = 3; i * i <= MAX; i += 2)
  23.     {
  24.         if (isprime[i])
  25.         {
  26.             for (int j = i * i; j <= MAX; j += i + i)
  27.             {
  28.                 isprime[j] = false;
  29.             }
  30.         }
  31.     }
  32.     v.push_back(2);
  33.     for (int i = 3; i <= MAX; i += 2)
  34.     {
  35.         if (isprime[i])
  36.         {
  37.             v.push_back(i);
  38.         }
  39.     }
  40. }
  41.  
  42. void prime_fac(ll n, ll m) {
  43.     vector<ll>::iterator it;
  44.     for (it = v.begin(); it != v.end(); it++)
  45.     {
  46.         if (n % *it == 0 || m % *it == 0)
  47.         {
  48.             se.insert(*it);
  49.             while (n % *it == 0 || m % *it == 0)
  50.             {
  51.                 if (n % *it == 0) n /= *it;
  52.                 if (m % *it == 0) m /= *it;
  53.             }
  54.         }
  55.     }
  56.     if (n != 1) se.insert(n);
  57.     if (m != 1) se.insert(m);
  58. }
  59.  
  60. int main() {
  61.     sieve();
  62.     ll t, a, b, x;
  63.     cin >> t;
  64.  
  65.     set<ll>::iterator it;
  66.  
  67.     ll val = -1;
  68.     vector<ll> res(MAX, 0);
  69.  
  70.     for (ll i = 0; i < t; i++) {
  71.         scanf("%lld %lld", &a, &b);
  72.         if (i == 0) prime_fac(a, b);
  73.         else {
  74.             ll cnt = 0;
  75.             for (it = se.begin(); it != se.end(); it++) {
  76.                 if (*it > max(a, b)) break;
  77.                 if (a % *it == 0 || b % *it == 0) {
  78.                     res[cnt] += 1;
  79.                     if (res[cnt] == t - 1) { val = *it; break; }
  80.                 }
  81.                 cnt++;
  82.             }
  83.         }
  84.     }
  85.  
  86.     if (t == 1) val = *se.begin();
  87.     cout << val << endl;
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement