A. LCM Problem
http://codeforces.com/contest/1389/problem/A
题面:
Let L C M ( x , y ) LCM(x, y) LCM(x,y) be the minimum positive integer that is divisible by both x x x and y y y. For example, L C M ( 13 , 37 ) = 481 LCM(13, 37) = 481 LCM(13,37)=481, L C M ( 9 , 6 ) = 18 LCM(9, 6) = 18 LCM(9,6)=18.
You are given two integers l l l and r r r. Find two integers x x x and y y y such that l ≤ x < y ≤ r l \le x < y \le r l≤x<y≤r and l ≤ L C M ( x , y ) ≤ r l \le LCM(x, y) \le r l≤LCM(x,y)≤r.
Input
The first line contains one integer t t t ( 1 ≤ t ≤ 10000 1 \le t \le 10000 1≤t≤10000) — the number of test cases.
Each test case is represented by one line containing two integers l l l and r r r ( 1 ≤ l < r ≤ 1 0 9 1 \le l < r \le 10^9 1≤l<r≤109).
Output
For each test case, print two integers:
-
if it is impossible to find integers x x x and y y y meeting the constraints in the statement, print two integers equal to − 1 -1 −1;
-
otherwise, print the values of x x x and y y y (if there are multiple valid answers, you may print any of them).
Example
input
4
1 1337
13 69
2 4
88 89
output
6 7
14 21
2 4
-1 -1
翻译:
令 L C M ( x , y ) LCM(x, y) LCM(x,y) 为可以被 x x x and y y y 整除的最小正(positive)整数。例如, L C M ( 13 , 37 ) = 481 LCM(13, 37) = 481 LCM(13,37)=481, L C M ( 9 , 6 ) = 18 LCM(9, 6) = 18 LCM(9,6)=18.
你可以得到两个整数 l l l and r r r. 找到两个整数 x x x and y y y 使得找到的两个整数 l ≤ x < y ≤ r l \le x < y \le r l≤x<y≤r and l ≤ L C M ( x , y ) ≤ r l \le LCM(x, y) \le r l≤LCM(x,y)≤r.
题意:
翻译便是题意
题解:
设 t = 2 ∗ x t = 2 * x t=2∗x 。
L C M ( x , t ) LCM(x, t) LCM(x,t) 得到的最小公倍数的在 L C M ( x , i ) ( x < i ) LCM(x, i) (x < i) LCM(x,i)(x<i)最小的。可以由规律得;
代码:
#include <bits/stdc++.h>
using namespace std;
void solve_1()
{
int l,r;
cin>>l>>r;
if(2 * l <= r)
cout<< l <<" "<< 2 * l <<endl;
else
cout<< -1 <<" "<< -1 <<endl;
}
int main (void)
{
int T;
cin>>T;
while (T--)
{
solve_1();
}
return 0;
}