zoukankan      html  css  js  c++  java
  • UVA11388 GCD LCM(数论)

    题目链接

    题意:

    给定两个数,一个G,一个L,找出两个数a,b(a<=b),使得这两个数的最大公约数为G,最小公倍数为L,且(a最小)。

    分析:

    当a,b存在时,a一定为G。

    自己证了一下,数学方面不太擅长。

    假设 a 最小为 k1G (其中 k1 != 1), b为 k2G, 即 a = G,不满足条件。

    那么a*b=k1*k2*G^2=L*G

    这时一定有 a1 = G, b2 = k1*k2G 满足条件。即a不符合题意。

    设 a = G, b = kG

    因为 L*G = a*b

    b = L*G/a = L.

    因为b = kG

    b/a=kG/G=k

    所以要满足的条件为 L % G == 0

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cstdlib>
    #include <queue>
    #include <algorithm>
    #include <cmath>
    
    using namespace std;
    
    const int maxn = 100+10;
    
    typedef long long LL;
    
    int main() {
      //  freopen("my.txt", "r", stdin);
        int T;
        LL G, L;
    
        scanf("%d", &T);
    
        while(T--) {
            while(cin >> G >> L) {
                   if(L % G) cout << "-1
    ";
                   else cout << G << ' ' << L << endl;
            }
        }
    
        return 0;
    }
  • 相关阅读:
    安全预警-防范新型勒索软件“BlackRouter”
    线程入门
    线程状态
    支付开发总结
    springboot处理date参数
    函数接口
    Excel通用类工具(一)
    Excel通用类工具(二)
    spring bean生命周期
    springboot整合netty(二)
  • 原文地址:https://www.cnblogs.com/tanhehe/p/3163367.html
Copyright © 2011-2022 走看看