HDU2028 Lowest Common Multiple PlusGCD+LCM

Posted 海岛Blog

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了HDU2028 Lowest Common Multiple PlusGCD+LCM相关的知识,希望对你有一定的参考价值。

Lowest Common Multiple Plus
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 111469 Accepted Submission(s): 46256

Problem Description
求n个数的最小公倍数。

Input
输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。

Output
为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。你可以假设最后的输出是一个32位的整数。

Sample Input
2 4 6
3 2 5 7

Sample Output
12
70

Author
lcy

Source
C语言程序设计练习(五)

问题链接HDU2028 Lowest Common Multiple Plus
问题简述:(略)
问题分析
  按Markdown格式重写了题解,旧版题解参见参考链接。
  解题程序使用非递归GCD函数,速度略快。使用递归GCD函数更为常见。
  使用C++编程的话,可以直接使用GCD算法函数__gcd()。
  这里给出C和C++两种语言的解题程序。
程序说明:(略)
参考链接HDU2028 Lowest Common Multiple Plus【入门】
题记:(略)

C语言递归GCD函数的程序如下:

/* GCD函数 */
int gcd(int m, int n)
{
    return n ? gcd(n, m % n) : m;
}

AC的C语言程序如下:

/* HDU2028 Lowest Common Multiple Plus */

#include <stdio.h>

/* LCM函数 */
#define lcm(a, b) a / gcd(a, b) * b

/* GCD函数 */
int gcd(int m, int n)
{
    int r;
    while (n) r = m % n, m = n, n = r;
    return m;
}

int main(void)
{
    int n, lcmval, val;
    while (scanf("%d", &n) != EOF) {
        /* 先读入一个数 */
        scanf("%d", &lcmval);

        /* 读入n-1个数,同时计算最小公倍数 */
        while (--n) {
            scanf("%d", &val);
            lcmval = lcm(lcmval, val);
        }

        /* 输出结果 */
        printf("%d\\n", lcmval);
    }

    return 0;
}

AC的C++语言程序如下:

/* HDU2028 Lowest Common Multiple Plus */

#include <iostream>
#include <algorithm>
#include <cstdio>

using namespace std;

/* LCM函数 */
inline int lcm(int a, int b) {return a / __gcd(a, b) * b;}

int main()
{
    int n, lcmval, val;
    while (scanf("%d", &n) != EOF) {
        /* 先读入一个数 */
        scanf("%d", &lcmval);

        /* 读入n-1个数,同时计算最小公倍数 */
        while (--n) {
            scanf("%d", &val);
            lcmval = lcm(lcmval, val);
        }

        /* 输出结果 */
        printf("%d\\n", lcmval);
    }

    return 0;
}

以上是关于HDU2028 Lowest Common Multiple PlusGCD+LCM的主要内容,如果未能解决你的问题,请参考以下文章

HDU2028 Lowest Common Multiple PlusGCD+LCM

HDU2028 Lowest Common Multiple PlusGCD+LCM

HDU 2028 Lowest Common Multiple Plus

杭电 2028 ( Lowest Common Multiple Plus )

HDoj 2028 Lowest Common Multiple Plus

LeetCode 236. Lowest Common Ancestor of a Binary Tree; 235. Lowest Common Ancestor of a Binary Searc