HDU 2028 Lowest Common Multiple Plus

淡定的小魚發表於2014-07-30

/*
中文題意:
中文翻譯:
題目大意:求幾個數的最小公倍數
解題思路:將輸入的數存入陣列中,先求出前兩個數的最小公倍數,再用這個公倍數和其他的數求最小公倍數,直到數求完為止。
難點詳解:熟練掌握c++的簡單排序函式的格式和使用,兩數相乘再除以最大公約數就是這兩個數的最小公倍數。
關鍵點:gcd函式的運用,c++的簡單排序
解題人:lingnichong
解題時間:2014/07/30    10:30
*/


Lowest Common Multiple Plus

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)
Total Submission(s): 32773    Accepted Submission(s): 13357


Problem Description
求n個數的最小公倍數。
 

Input
輸入包含多個測試例項,每個測試例項的開始是一個正整數n,然後是n個正整數。
 

Output
為每組測試資料輸出它們的最小公倍數,每個測試例項的輸出佔一行。你可以假設最後的輸出是一個32位的整數。
 

Sample Input
2 4 6 3 2 5 7
 

Sample Output
12 70
 


#include<stdio.h>
#include<algorithm>
using namespace std;
int a[1010];
int gcd(int a,int b)
{
	return b==0?a:gcd(b,a%b);
}
int main()
{
	int n,i,t,min;
	while(scanf("%d",&n)!=EOF)
	{
		for(i=0;i<n;i++)
		scanf("%d",&a[i]);
		sort(a,a+n);
		min=a[0];
		for(i=1;i<n;i++)
		{
			t=gcd(min,a[i]);
			min=min/t*a[i];
		}
		printf("%d\n",min);
	}
	return 0;
} 



相關文章