hdu 1019 Least Common Multiple(最小公倍数)

题意 : 求n个数的最小公倍数

思路:

          这题直接枚举是不可能的

          所以想到了一遍输入一边计算 把每次的gcd给除掉 并相乘 得到的就是lcm

          sum=sum*a/(gcd(sum,a));

 

#include<stdio.h>
#include<string.h>
#include<math.h>
#include<iostream>
#include<algorithm>
#include<queue>
#include<stack>
#define mem(a,b) memset(a,b,sizeof(a))
#define ll __int64
#define MAXN 1000
#define INF 0x7ffffff
#define lson l,m,rt<<1
#define rson m+1,r,rt<<1|1
using namespace std;
ll gcd(ll a,ll b)
{
    return a%b==0?b:gcd(b,a%b);
}
int main()
{
    int t,n,tn;
    ll a,sum;
    cin>>t;
    while(t--)
    {
        cin>>n;
        tn=n;
        sum=1;
        while(n--)
        {
            //cout<<n<<endl;
            scanf("%I64d",&a);
            if(n==tn-1) {sum=a;continue;}
            sum=sum*a/(gcd(sum,a));
        }
        cout<<sum<<endl;
    }
    return 0;
}

  

posted @ 2014-08-20 01:38  sola94  阅读(107)  评论(0编辑  收藏  举报