1.题目链接:
http://acm.hdu.edu.cn/showproblem.php?pid=1019
2.思路:
就是求n个数的最小公倍数,先求两个数的最大公约数,再求两个数的最小公倍数,再将这个数与下一个数求最小公倍数。
注意要用64位的,不然会WA啊!!!
3.参考代码:
#include <stdio.h>
__int64 gcd(__int64 a,__int64 b){ ///求最大公约数
__int64 t;
if(a<b)
{
t=a;
a=b;
b=t;
}
if(a%b==0)
return b;
else
return gcd(b,a%b);
}
__int64 lcm(__int64 a,__int64 b){ ///求最小公倍数
return a*b/gcd(a,b);
}
int main()
{
__int64 a,b; ///注意类型啊——64位的
int i,n,t;
scanf("%d",&t);
while(t--)
{
scanf("%d",&n);
scanf("%I64d",&a);
for(i=0;i<(n-1);i++)
{
scanf("%I64d",&b);
a=lcm(a,b);
}
printf("%I64d\n",a);
}
return 0;
}