fork download
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. #define ll long long
  4. #define vll vector<ll>
  5. #define vi vector<int>
  6. template <typename T>
  7. ostream &operator<<(ostream &os, vector<T> &v)
  8. {
  9. for (auto &i : v)
  10. os << i << ' ';
  11. return os;
  12. }
  13. template <typename T>
  14. istream &operator>>(istream &is, vector<T> &v)
  15. {
  16. for (auto &i : v)
  17. is >> i;
  18. return is;
  19. }
  20.  
  21. ll gcd(int a, int b)
  22. {
  23. if (b == 0)
  24. return a;
  25. return gcd(b, a % b);
  26. }
  27. int32_t main()
  28. {
  29. ios::sync_with_stdio(false);
  30. cin.tie(nullptr);
  31.  
  32. int a, b;
  33. cin >> a >> b;
  34. int g = gcd(a, b);
  35.  
  36. vi divs;
  37. for (int i = 1; i * i <= g; i++)
  38. {
  39. if (g % i == 0)
  40. {
  41. divs.emplace_back(i);
  42. if (i != g / i)
  43. divs.emplace_back(g / i);
  44. }
  45. }
  46.  
  47. sort(divs.begin(), divs.end());
  48. int q;
  49. cin >> q;
  50. while (q--)
  51. {
  52. int l, h;
  53. cin >> l >> h;
  54.  
  55. auto it = upper_bound(divs.begin(), divs.end(), h) - divs.begin();
  56. it--;
  57. if (divs[it] >= l)
  58. cout << divs[it] << '\n';
  59. else
  60. cout << -1 << '\n';
  61. }
  62.  
  63. return 0;
  64. }
  65.  
Success #stdin #stdout 0.01s 5296KB
stdin
Standard input is empty
stdout
Standard output is empty