Problem Link:http://acm.hdu.edu.cn/showproblem.php?pid=1019
原题:
Least Common Multiple
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 30183 Accepted Submission(s): 11417
2 3 5 7 15 6 4 10296 936 1287 792 1
105 10296
--------------------------------------------------------------------------------------------------------------------------------------------
#include<stdio.h>
int gcd(int a,int b)//欧几里德求最大公约数
{
if(b==0)
return a;
return gcd(b,a%b);
}
int main()
{
int cas,n,x,y,t,i;
while(scanf("%d",&cas)!=EOF)
{
while(cas--)
{
scanf("%d%d",&n,&x);
for(i=2;i<=n;i++)
{
scanf("%d",&y);
if(y>x)
{
t=y;
y=x;
x=t;
}
x=x/gcd(x,y)*y;//最小公倍数=两数之积/最大公约数(注意:这里换一下顺序,先除后乘,以免数据溢出)
}
printf("%d\n",x);
}
}
return 0;
}
-----------------------------------------------------------------------------------------------------------------------------------------

本文提供了一种高效的方法来解决HDU在线评测平台上的1019题,即计算一组整数的最小公倍数。通过使用欧几里得算法求最大公约数并进行相应的数学运算,本文详细解释了如何实现这一过程,包括输入解析、算法应用以及输出格式。适合初学者理解和实践。
955

被折叠的 条评论
为什么被折叠?



