小M的区间公约数
时间限制:
1000 ms | 内存限制:
65535 KB
难度:
2
-
描述
-
小M对最大公约数已经很熟悉了,今天突发奇想,她想知道区间最大的公约数。
两个数a,b,然后有n组询问,每组询问[L,R],输出[L,R]区间中
a,b最大的公约数,没有输出-1。
-
输入
-
第一行输入a,b, (1 ≤ a, b ≤ 10^9)
第二行输入n,(1 ≤ n ≤ 10^4)
然后接下来n行,每行[L,R]。(1 ≤ L ≤ R ≤ 10^9)
输出
- 输出每次询问的结果。 样例输入
-
9 27 3 1 5 10 11 9 11
样例输出
-
3 -1 9
上传者
-
TC_常红立
ac代码
#include<stdio.h> int gcd(int a,int b) { int t; if(a<b) { //a=t; t=a; a=b; b=t; } if(b==0) return a; else return gcd(b,a%b); } int main() { int a,b,g,t; while(scanf("%d%d",&a,&b)!=EOF)//注意多组测试数据,,,要输入多组a,b { g=gcd(a,b); scanf("%d",&t); while(t--) { int l,r,i,w=0; scanf("%d%d",&l,&r); if(r>g) r=g; for(i=r;i>=l;i--) { if(g%i==0) { w=1; break; } } if(w) printf("%d\n",i); else printf("-1\n"); } } }
-
第一行输入a,b, (1 ≤ a, b ≤ 10^9)