杭电ACM 2028 Lowest Common Multiple Plus

Time limit
1000 ms
Memory limit
32768 kB

 求n个数的最小公倍数。 

Input
输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。
Output
为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。你可以假设最后的输出是一个32位的整数。
Sample Input

2 4 6
3 2 5 7

Sample Output

12
70

思路:
知道两点即可
1:3个数的最小公倍数 = 前两个数的最小公倍数和第三个数的最小公倍数,n个数以此类推。
2:A和B的最小公倍数*最大公约数 = A*B
代码:

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

using namespace std;

int main()
{
    int N;
    while(scanf("%d",&N)!=EOF)
    {
        int gbd;
        scanf("%d",&gbd);
        while(--N)
        {   
            int mid;
            scanf("%d",&mid);
            gbd = gbd/__gcd(gbd,mid)*mid;
        }
        printf("%d\n",gbd);
    }
    return 0;
}
posted @ 2017-10-02 21:59  Assassin_poi君  阅读(211)  评论(0编辑  收藏  举报