第一次参加codeforces,水了一题就赶紧逃了(つ﹏⊂)。
题目大意:给出t组数据,每组数据给出l和r,能否找到x,y满足 l≤x<y≤r and l≤LCM(x,y)≤r.能找到请输出任意解,不能找到输出两个-1。
样例:
input
4
1 1337
13 69
2 4
88 89
output
6 7
14 21
2 4
-1 -1
代码我觉得都能看懂,就是根据x是lcm(x,y)的因子暴力搜。
#include <bits/stdc++.h>
using namespace std;
int gcd(int a, int b)
{
return b ? gcd(b, a % b) : a;
}
int lcm(int a, int b)
{
return a / gcd(a, b) * b;
}
int main()
{
int t;
scanf("%d", &t);
int l, r;
while (t--)
{
int flag = 0;
scanf("%d%d", &l, &r);
for (int a = l; a <= r / 2; a++)
{
if (flag)
break;
for (int i = 2; i <= r / l; i++)
if (a * i <= r)
{
printf("%d %d\n", a, a * i);
flag = 1;
break;
}
}
if (flag)
continue;
printf("-1 -1\n");
}
return 0;
}