ACwing 4199. 公约数

 

 

 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int a,b;
 4 int gd;
 5 vector<int>v;
 6 int main()
 7 {
 8   
 9   cin>>a>>b;
10   int n;
11   cin>>n;
12   gd=gcd(a,b);
13   for(int i=1;i<=sqrt(gd);i++)
14   if(gd%i==0)
15   {
16     v.push_back(i);
17     v.push_back(gd/i);
18   }
19   sort(v.begin(),v.end());
20   for(int i=1;i<=n;i++)
21   {
22     int l,r;
23     cin>>l>>r;
24     int pl=0,pr=v.size()-1;
25     while(pl<=pr)
26     {
27       int mid=(pl+pr)>>1;
28       if(v[mid]>r)pr=mid-1;
29       else pl=mid+1;
30     }
31     
32     if(v[pr]>=l&&v[pr]<=r)cout<<v[pr]<<endl;
33     else cout<<"-1"<<endl;
34   }
35   
36 }

 

posted @ 2021-12-18 22:26  matt-11  阅读(28)  评论(0)    收藏  举报