求n个数的最小公倍数。
Input 输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。 Output 为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。你可以假设最后的输出是一个32位的整数。 Sample Input
2 4 6 3 2 5 7Sample Output
12 70
题意及其解题思路:求一组测试样例的LCM,可以先求两个数的LCM(a,b)赋值为a,再输入一个数b,再把LCM(a,b)赋值a,用for循环执行这个过程,便可求解。
#include"stdio.h"
#include"string.h"
#include"stdlib.h"
#include"algorithm"
using namespace std;
int GCD(int a,int b)
{
if(a < b)
{
swap(a,b);
}
int c;
while(b)
{
c = a % b;
a = b;
b = c;
}
return a;
}
int LCM(int a,int b)
{
return a / GCD(a,b) * b;
}
int main()
{
int n,xx[1000],i,j,a,b,s;
while(~scanf("%d",&n))
{
if(n == 1)
{
scanf("%d",&s);
printf("%d\n",s);
}
else
{
for(i = 0;i < n;i ++)
{
scanf("%d",&b);
if(i == 0)
{
a = b;
}
else
{
a = LCM(a,b);
}
}
printf("%d\n",a);
}
}
return 0;
}