解析:
范围中L<=x<y<=R,如果找到满足题意的x和y,且其公约数记作a,x=am,y=an,使得L<=am<an<=R,
意味着
1,a*(n-m)<=R-L,也就是a这个最大公约数必须小于等于R-L
2,m=x/a>=L/a,且大于零
3,n=y/b<=R/a,且大于零
4,m<n
于是我们遍历R-L到1,如果能找到满足要求的m和n,同时就找到了x和y,以及满足要求的最大公约数a
#include <bits/stdc++.h>
using namespace std;
int main() {
int l,r;
cin>>l>>r;
l=l-1;
for (int i=r-l;i>=1;i--){
if (r/i-l/i>1){
cout<<i;
return 0;
}
}
return 0;
}
评论区