I I U C   O N L I N E  
C O N T E S T   2 0 0 8

Problem D: GCD LCM

Input: standard input

Output: standard output

The GCD of two positive integers is the largest integer that divides both the integers without any remainder. The LCM of two positive integers is the smallest positive integer that is divisible by both the integers. A positive integer can be the GCD of many
pairs of numbers. Similarly, it can be the LCM of many pairs of numbers. In this problem, you will be given two positive integers. You have to output a pair of numbers whose GCD is the first number and LCM is the second number.

Input

The first line of input will consist of a positive integer TT denotes the number of cases. Each of the next T lines will contain two positive integer, G and L.

Output

For each case of input, there will be one line of output. It will contain two positive integers a and ba ≤ b, which has a GCD of G and LCM of L. In case there is more
than one pair satisfying the condition, output the pair for which a is minimized. In case there is no such pair, output -1.

Constraints

-           T ≤ 100

-           Both and will be less than 231.

Sample Input

Output for Sample Input

2

1 2

3 4

1 2

-1

Problem setter: Shamim Hafiz

题意 :给出两个数G,L,问是否存在一对数a,b。使得gcd(a,b)==G,lcm(a,b)==L;

能够这么想:当gcd(G,L)==G(a),lcm(G,L)==L(b)时。此时G==a,L==b,满足上述条件。否则不成立。

#include <cstdio>
#include <iostream>
#include <algorithm>
#include <cstring>
#include <cctype>
#include <cmath>
#include <cstdlib>
#include <vector>
#include <queue>
#include <set>
#include <map>
#include <list>
#define ll long long
using namespace std;
const int INF = 0x3f3f3f3f;
ll gcd(ll a,ll b)
{
if(b==0) return a;
else return gcd(b,a%b);
}
ll lcm(ll a,ll b)
{
return a*b/gcd(a,b);
}
int main()
{
int t;ll a,b;
scanf("%d",&t);
while(t--)
{
scanf("%lld%lld",&a,&b);
ll G=gcd(a,b),L=lcm(a,b);
if(G==a&&L==b)
printf("%lld %lld\n",a,b);
else
puts("-1");
}
return 0;
}

版权声明:本文博主原创文章,博客,未经同意不得转载。

最新文章

  1. TP5验证规则
  2. AVFoundation播放视频时显示字幕,切换音轨
  3. hdu 1299 Diophantus of Alexandria (数论)
  4. Oracle 11g系列:视图
  5. nyoj756_重建二叉树_先序遍历
  6. WPF窗口阴影和夜间模式的实现
  7. PHP 定时任务|Cron
  8. 内存管理和@property的属性
  9. jmeter 使用聚合报告分析jtl文件
  10. 底部菜单栏(三)Fragment+FragmentTabHost实现仿新浪微博底部菜单栏
  11. amCharts 破解
  12. bzoj1061 志愿者招募
  13. 超声波 HC-SR04
  14. vue-cli项目中,全局引入jquery
  15. 深入理解koa中的co源码
  16. 如何取消Visual Studio Browser Link
  17. 可以在任何时候attach一个shader到program对象
  18. mysql4.5 更改密码,登录命令行闪退
  19. HAproxy simple
  20. Andorid之ActivityManager

热门文章

  1. ogre sample分析(一)
  2. Struts ActionForm简单理解
  3. GitHub上最火的74个Android开源项目
  4. Android中&amp;lt;meta-data&amp;gt;的使用
  5. 轻松学习之Linux教程一 ubuntu14.04+windows双系统安装
  6. Ubuntu9.04更新源
  7. shu_1241 邮局位置问题
  8. POJ题目分类【实在是不知道哪个是原创了】
  9. Android-1-电话拨号程序
  10. hdu2151(递推dp)