问题 C: 最大公约数
时间限制: 1.000 Sec 内存限制: 128 MB
提交 状态
题目描述
鸡尾酒的数学很差,他学了很长时间的最大公约数,终于有一天他会求最大公约数了。
于是他迫不及待地向你提问——给定数轴上的区间[l,r],你可以从中任选两个不相同的整数,求它们的最大公约数。请问它们的最大公约数最大为多少?
输入
输入两个正整数l,r,意义如题面所示。
输出
输出一行一个正整数表示答案。
样例输入 Copy
【样例1】 6 10 【样例2】 10000 19999
样例输出 Copy
【样例1】 3 【样例2】 6666
提示
样例1解释:可以从中选出两个正整数6和9,它们的最大公约数为3。除此之外,没有一种选法可以使得两个数字的最大公约数更大。
【数据范围】
对于20%的数据,满足l<r≤1000。
对于另外20%的数据,满足r%l==0。
对于100%的数据,满足1≤l<r≤107
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
int a,b;
int check(int x)
{
int l=ceil(1.0*a/x);
int r=b/x;
if(r-l>=1)return 1;
else return 0;
}
int main()
{
cin>>a>>b;
int l=0,r=b;
int maxa=0;
for(int i=b;i>=1;i--)
{
if(check(i))
{
cout<<i;break;
}
}
}