数论 UVA 11388

这道题是关于两个数的最大公约数和最小公倍数的题目。给你两个数字g,l,分别表示最大公约数和最小公倍数。要求你找到两个数a,b,要求这两个数的最大公约数和最小公倍数为所给的两个数。如果存在多组数字符合这一条件,

就输出a最小的那一组数字。由最大公约数和最小公倍数与两个数的关系可得,a*b=l*g,g<=a,b<=l,a%g==b%g==0,l%a==l%b==0。则所要求的a最小的那组数据,其实就是当a==g时所求出的那组数据。

#include <stdio.h>
#include <stdlib.h>

int main()
{
    int g,l,t;
    scanf("%d",&t);
    while(t--)
    {
        int x;
        scanf("%d%d",&g,&l);
        if(g>l)
        {
            x=g;
            g=l;
            l=x;
        }
        int a,b;
        if(l%g==0)
        {
            a=g;
            b=l;
            printf("%d %d\n",a,b);
        }
        else
            printf("-1\n");
    }
    return 0;
}
时间: 2024-10-28 13:36:51

数论 UVA 11388的相关文章

Uva 11388 GCD LCM ( 数论 )

Uva  11388 GCD LCM( 数论 ) 题意: 求是否存在a,b 使得lcm(a,b) = L, gcd(a,b) = G,不存在输出-1,存在输出a,b,且a尽可能小 分析: 强行暴力是不可能的数据很大,要用llu,这里有两种思路 思路一: 由题意可知 a*b = G*L 保证a = G的倍数的情况下,枚举a再判断G*L能否整除a,最后判断b是否为a的倍数.a从G开始扫到sqrt(G*L) //输入两个整数G,L //找出a,b 使得 gcd(a,b) = G lcm(a,b) =

UVA - 11388 GCD LCM

II U C   ONLINE   C ON TEST   2 008 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

UVa 11388 &amp; 丝帛

一直在想丝帛题要不要贴呢...后来觉得还是贴了吧...反正没人看...blog是开给自己看的...偶尔无聊打打blog也显得生活非常充实... 题意: 给一个gcd和lcm求满足啊他们的最小的a和b. SOL: 还想着质因数分解来着...转念一想比gcd小的数的gcd也不能变成G啊...这不是丝帛么...那最小的不就是gcd么... 数论用几个丝帛题开头好了 = =... Code: #include <cstdio> #include <cstdlib> #include <

数论 UVA 10780

数论题目.有关内容:整数质因数分解,N的阶乘质因数分解,整除的判断. 这道题的题意是给你两个数n.m,要求你求出n!所能整除的m^k的最大值的k是多少. 由于数据范围:1<m<5000,1<n<10000.通过分析我们可知,当n在100 以上后n!早已超出了int甚至__int64的范围了.即使在int范围内,要算出n!和m^k然后依次遍历,这样会超时. 所以我们可以考虑将如果m能整除n!,那么m^k才会有可能整除n!.如果n!可以整除m,那么将m进行质因数分解后,所得的所有质因子

数论 UVA 10943

这是一道关于组合数和隔板法的数论题目.题目说的是选出k个不同且不大于N的数字进行相加,要求这些数字之和等于N,结果要求输出这样的数有多少组.这里可以将问题利用隔板法来转换,那么题目的叙述可以转换成:这里有N个相同的小球,要求放到k个相同的盒子中,盒子可以为空,但一定要把所有球都放进盒子中,问共有多少种放法.经过题目描述的转换,这道题目就可以运用隔板法的公式:所有符合条件的情况的种数为c[N+k-1][k-1]. 由组合数的公式可得c[m][n]=c[m-1][n-1]+c[m-1][n].由于这

数论 UVA 11889

有关数论的题目,题目大意是给你两个数a和c,c为a和另一个数b的最小公倍数,要求你求出b的最小值.由最大公约数gcd(a,b)和最小公倍数lcm(a,b)之间的关系可知,lcm(a,b)*gcd(a,b)=a*b; 则b=lcm(a,b)*gcd(a,b)/a,b=c*gcd(a,b)/a,b/gcd(a,b)=c/a.因为c/a是b除去gcd(a,b)后的部分.若gcd(a,c/a)=1,就表明c/a就是我们要求的答案:否则,就说明c/a小于b,需要还原.还原 的过程中,首先求出gcd(a,c

uva 11388 GCD LCM题解

题意:输入两个数G,L,找出两个数a,b,使得gcd(a,b)=G,lcm(a,b)=L.有多解输出a最小的那个.无解输出-1. 嗯,这是一道值得思考5s的题目. L%G==0即有解,否则无解. 有解的话我们让a=G,b=L.这样a一定是最小,且合法. 1 #include<cstdio> 2 int T,G,L; 3 int main() 4 { 5 scanf("%d",&T); 6 while(T--) 7 { 8 scanf("%d%d"

数论 UVA 11076

这道题目的意思简单易懂说的是给你n个数(可能有重复相同的数字),列出他们所有排列的情况,再逐位相加,求出和,例如:给你1,2,3,则排列的情况为<123>, <132>, <213>, <231>, <312>, <321> ,则相加的和为1332.思路很好把握,但是需要比较扎实的数学基础,因为该问题的核心公式需要理解和记忆否则很难做出来. 这道题目的核心知识点是:多重集合排列(也叫不全相异元素全排列),这里有一个定理:设S是一个多重

数论 UVA 11752

题目大意是在1~2^64-1的范围内找到所有符合条件的数,条件要求这个数字是两个或两个以上不同数字的幂,例如64=8^2=4^3. 对于这一题,分析是:如果一个满足这个条件的数字一定可以转换成i^k,而且k是一个合数.同时,幂指数的上限在1~64中,这一点是通过观察筛选数字的范围 所得出的.综上,幂指数k的限定条件是(1<=k<=64,k为合数).那么在正式筛选数字前可以通过素数筛选从而来标记出1~64中所有的合数,而对于每一种情况的幂指数就是ceil(log(2^64)/log(i))=ce