杭电2028

Lowest Common Multiple Plus

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


Problem Description

求n个数的最小公倍数。

 


Input

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

 


Output

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

 


Sample Input

2 4 6
3 2 5 7

 


Sample Output

12
70


这道题也很简单,当时我用的是笨办法,遍历从最大数到所有数乘积这两数之中的每一个数,若遇整除者则停下。代码也能AC,代码如下:

#include <stdio.h>

int main (void)
{
	int n,max,count,i;
	long int j;
	unsigned int a[100],sum;

	while (scanf("%d",&n)!=EOF)
	{
		for (i=0; i<n; i++)
		{
			scanf("%d",&a[i]);
		}

		sum=1;

		for(i=0; i<n; i++)
			sum*=a[i];
		


		max=a[0];

		for(i=0; i<n; i++)
		{
			if(a[i]>max)
				max=a[i];
		}
		
		
		for(j=max; j<=sum; j++)
		{
			count=0;
			for(i=0; i<n; i++)
			{
				if(j%a[i]==0)
					count++;
			}

			if(count==n)
			{
				printf("%d\n",j);
				break;
			}
		}

	}

	return 0;
}


你可能感兴趣的:(杭电2028)