rt. wrong answer 14th numbers differ - expected: '2', found: '1'。
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1e6 + 5;
int cur, p[N];
int main()
{
int a, b;
cin >> a >> b;
int Gcd = __gcd(a, b);
for (int i = 1; i * i <= Gcd; i++)
{
if (!(Gcd % i))
{
p[++cur] = i;
p[++cur] = Gcd / i;
}
}
sort(p + 1, p + 1 + cur);
int q;
cin >> q;
while (q--)
{
int l, r;
cin >> l >> r;
int x = lower_bound(p + 1, p + 1 + cur, r) - p - 1;
if (p[x] < l) cout << "-1\n";
else cout << p[x] << "\n";
}
return 0;
}