链接点这儿

题目:

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 T. T 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 b, a ≤ 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 G and L will be less than 231 .

Sample Input 2 1 2 3 4

Sample Output 1 2 -

题目大意:

其实就是说,给你两个数的GCD和LCM,让你求一种小的那个数尽可能的小,并大的在这个基础上也尽可能的小的那两个数。

先上代码!

 #include<bits/stdc++.h>
using namespace std;
int t;
long long a,b,c,d,ans[][];
int main()
{
cin>>t;
for(int i=;i<=t;i++)
{
cin>>a>>b;
if(b%a==)//如果GCD可被LCM整除
{
ans[i][]=a;
ans[i][]=b;
continue;
}
else ans[i][]=-;
}
for(int i=;i<=t;i++)
if(ans[i][]==-)
printf("-1\n");
else
printf("%lld %lld\n",ans[i][],ans[i][]);
return ;
}

为什么可以这么写呢?下面我详细讲一讲:

证明:

我们先看到第11行的if语句:当GCD可被LCM整除时,两个数为GCD和LCM。

我们设两个数分别为a,b。(a<=b)

首先我们知道,GCD一定可以被a和b整除,而a和b又可以被LCM整除,所以GCD一定可被LCM整除。

而我们又知道,当一个数x可被y整除时,他们的GCD为x,LCM为y

又因为GCD*k=a(k>=1&&k==int(k)),所以a>=GCD,最小值为GCD。

所以我们这里就设a为最小值。(也就是a=GCD)

我们确定了a以后,又根据公式:GCD*LCM=a*b,其中GCD,a,LCM已知,所以b的值一定是固定的,而且就等于LCM。

所以当a取最小值(a=GCD(a,b),b=LCM(a,b))时,(a,b)为符合要求的最优解。

证毕。

第11行证完了之后,我们再来证第17行的else语句。

其实还是利用GCD一定可以被a和b整除,而a和b又可以被LCM整除,所以GCD一定可被LCM整除这个原理。

所以一定无解。

证毕。

这个时候我们就证完了。O(t)算法(其实可以算是O(1))。

如果你觉得你有更巧妙的方法,欢迎在下方留言。

UVA11388 GCD LCM的更多相关文章

  1. 洛谷 UVA11388 GCD LCM

    UVA11388 GCD LCM Description of the title PDF The GCD of two positive integers is the largest intege ...

  2. UVA11388 GCD LCM(数论)

    题目链接. 题意: 给定两个数,一个G,一个L,找出两个数a,b(a<=b),使得这两个数的最大公约数为G,最小公倍数为L,且(a最小). 分析: 当a,b存在时,a一定为G. 自己证了一下,数 ...

  3. Mathematics:GCD & LCM Inverse(POJ 2429)

    根据最大公约数和最小公倍数求原来的两个数 题目大意,不翻译了,就是上面链接的意思. 具体思路就是要根据数论来,设a和b的GCD(最大公约数)和LCM(最小公倍数),则a/GCD*b/GCD=LCM/G ...

  4. POJ 2429 GCD & LCM Inverse (Pollard rho整数分解+dfs枚举)

    题意:给出a和b的gcd和lcm,让你求a和b.按升序输出a和b.若有多组满足条件的a和b,那么输出a+b最小的.思路:lcm=a*b/gcd   lcm/gcd=a/gcd*b/gcd 可知a/gc ...

  5. [POJ 2429] GCD & LCM Inverse

    GCD & LCM Inverse Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 10621   Accepted: ...

  6. POJ 2429 GCD & LCM Inverse(Pollard_Rho+dfs)

    [题目链接] http://poj.org/problem?id=2429 [题目大意] 给出最大公约数和最小公倍数,满足要求的x和y,且x+y最小 [题解] 我们发现,(x/gcd)*(y/gcd) ...

  7. UVA - 11388 GCD LCM

    II U C   ONLINE   C ON TEST  Problem D: GCD LCM Input: standard input Output: standard output The GC ...

  8. hdu-3071 Gcd & Lcm game---质因数分解+状态压缩+线段树

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=3071 题目大意: 给定一个长度为n的序列m次操作,操作的种类一共有三种 查询 L :查询一个区间的所 ...

  9. [ 9.13 ]CF每日一题系列—— 340A GCD & LCM

    Description: [ 着实比较羞愧,都想着去暴力,把算法(方法)也忘了] A只涂x,2x,3x……,B只涂y,2y,3y……问你A和B共同涂的墙的个数 Solution: 就是求x和y的lcm ...

随机推荐

  1. redux和react-redux做简单组件控制

    这次我们用两种方式实现以下要求 1.三个组件 2.第一个组件有两个按钮 分别控制第二和第三个组件年龄和姓名的改变 3第二个组件展示姓名,第三个组件展示年龄 用到哪些插件 store  redux 一 ...

  2. scrapy实战3利用fiddler对手机app进行抓包爬虫图片下载(重写ImagesPipeline):

    关于fiddler的使用方法参考(http://jingyan.baidu.com/article/03b2f78c7b6bb05ea237aed2.html) 本案例爬取斗鱼 app 先利用fidd ...

  3. Linux 操作系统及其组成,shell命令

    Linux 操作系统及其组成 操作系统的作用 操作系统(OS)是管理计算机硬件与软件资源的计算机程序,同时也是计算机系统的内核与基石.操作系统需要处理如管理与配置内存.决定系统资源供需的优先次序.控制 ...

  4. JsonUtil(基于Jackson的实现)

    JsonUtil(基于Jackson的实现) 前言: 其实,我一直想写一个有关Util的系列. 其中有四个原因: Util包作为项目的重要组成,是几乎每个项目不可或缺的一部分.并且Util包的Util ...

  5. 探究Hybrid-APP技术原理

    探究Hybrid-APP技术原理 author: @TiffanysBear 背景 随着Web技术的发展和移动互联网的发展,Hybrid技术已经成为一种前端开发的主流技术方案.那什么是Hybrid A ...

  6. Android Native 内存泄漏系统化解决方案

    导读:C++内存泄漏问题的分析.定位一直是Android平台上困扰开发人员的难题.因为地图渲染.导航等核心功能对性能要求很高,高德地图APP中存在大量的C++代码.解决这个问题对于产品质量尤为重要和关 ...

  7. Single Thread Execution设计模式

    public class Test { public static void main(String[] args){ // FlightSercurityTest.test(); // EatNoo ...

  8. MDX查询SSAS结果--通过adomd.net展示到客户端

    SSAS多维模型建好之后,除了在excel客户端直接链接ssas源拖拽pivot分析使用外,还可以讲要展示的结果集通过MDX语句查询出来,嵌入到程序中,通过运行程序跑出完整的报表.如图所示:

  9. 整型,布尔值,字符串详解,for语句 练习

    2019 年 7 月 8 日 1.将今天的课上的代码敲一遍,然后整理笔记 已完成 2.有变量name = "aleX leNb" 完成如下操作: 移除 name 变量对应的值两边的 ...

  10. 远程调试出现DEP0600: 部署失败。无法通过新部署管道进行部署错误解决

    昨天我连接树莓派调试没问题,今天来的时候却总是出现DEP0600: 部署失败.无法通过新部署管道进行部署.错误 我怀疑是环境问题,然后发现蓝莓派上面没有远程调试监视器(MSVSMON.EXE)进程,怀 ...