【杭电oj】2028-Lowest Common Multiple Plus(最小公倍数)(水)

Lowest Common Multiple Plus

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


Problem Description
求n个数的最小公倍数。
 

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

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

Sample Input
   
   
   
   
2 4 6 3 2 5 7
 

Sample Output
   
   
   
   
12 70
 

Author
lcy
 

Source
C语言程序设计练习(五)

刚学c的时候是一个数一个数判断的,也算勉强ac了。后来做题怕超时,先给数排序,用最大的数挨个向后计算,不知道时间上会不会快一点。


第一次代码:

#include <stdio.h>
#include <math.h>
int main()
{
	int n;
	int x;		//判断是否为多少个数的倍数 
	while (scanf("%d",&n)!=EOF)
	{
		x=0;
		int cot=1;
		int a[1125];
		for (int k=1;k<=n;k++)
		{
			scanf ("%d",&a[k]);
		}
		while (cot++)
		{
			for (int k=1;k<=n;k++)
			{
				if (cot%a[k]!=0)
				{
					break;
				}
				else
				{
					x++;
				}
			}
			if (x==n)
			{
				break;
			}
			else
			{
				x=0;
			}
		}
		printf ("%d\n",cot);
	}
	return 0;
}

第二次代码:

#include <stdio.h>
#include <algorithm>
using namespace std;
bool cmp(int a,int b)
{
	return a>b;
}
int main()
{
	int u;
	int a[10000];
	int cot;
	int t; 
	while (~scanf ("%d",&u))
	{
		for (int i=1;i<=u;i++)
		{
			scanf ("%d",&a[i]);
		}
		sort (a+1,a+1+u,cmp);
		t=cot=a[1];
		for (int i=2;i<=u;i++)
		{
			for (int j=1;cot%a[i]!=0;j++)
			{
				cot+=t;
			}
			t=cot;
		}
		printf ("%d\n",cot);
	}
	return 0;
}





你可能感兴趣的:(【杭电oj】2028-Lowest Common Multiple Plus(最小公倍数)(水))