HDU 1019 求多个数的最小公倍数

来源:互联网 发布:php企业网站源码下载 编辑:程序博客网 时间:2024/06/10 03:30

Least Common Multiple



Problem Description
The least common multiple (LCM) of a set of positive integers is the smallest positive integer which is divisible by all the numbers in the set. For example, the LCM of 5, 7 and 15 is 105.

 

Input
Input will consist of multiple problem instances. The first line of the input will contain a single integer indicating the number of problem instances. Each instance will consist of a single line of the form m n1 n2 n3 ... nm where m is the number of integers in the set and n1 ... nm are the integers. All integers will be positive and lie within the range of a 32-bit integer.
 

Output
For each problem instance, output a single line containing the corresponding LCM. All results will lie in the range of a 32-bit integer.
 

Sample Input
23 5 7 156 4 10296 936 1287 792 1
 


就是求多个数的最小公倍数..

现在写的..

#include <iostream>#include <algorithm>using namespace std;int gcd(int a, int b){int r ;if(a<b)swap(a,b);while(b>0)r=a%b,a=b,b=r;return a;}int main(){int a,i,m,n,t;scanf("%d",&t);while(t--){scanf("%d%d",&n,&a);for(i=1;i<n;i++){scanf("%d",&m);a=a/gcd(a,m)*m;}printf("%d\n",a);}return 0;}

 

以前用暴力法a的.

#include<iostream>using namespace std;int main(){    int a,b,t,q;    cin>>q;    while(q--)    {        int n,a,b,i;        cin>>n;        cin>>a;        for(i=1;i<n;i++)        {            cin>>b;            for(t=a;t%a||t%b;t+=a);//求最小公倍数            a=t;        }        cout<<a<<endl;    }    return 0;}