4003: 深入浅出学算法004-求多个数的最小公倍数
Time Limit: 1 Sec Memory Limit: 64 MB
Submit: 3630 Solved: 983
Description
求n个整数的最小公倍数
Input
多组测试数据,先输入整数T表示组数 然后每行先输入1个整数n,后面输入n个整数k1 k2…kn
Output
求k1 k2 …kn的最小公倍数
Sample Input
1
3 12 18 6
Sample Output
36
这道题刚开始没有使用数组,结果tle了;后来去大佬博客看了下,改成数组就过了
#include<stdio.h>
int gcd(int x,int y)
{
int t=1;
while(t!=0)
{
t=x%y;
x=y;
y=t;
}
return x;
}
int lcm(int s[],int n)
{
int num,i;
for(i=0;i<n-1;i++)
{
num=gcd(s[i],s[i+1]);
s[i+1]=s[i]/num*s[i+1]/num*num;
}
return s[n-1];
}
int main()
{
int t,n,m,i;
while(scanf("%d",&t)!=EOF)
{
while(t--)
{
scanf("%d",&n);
int s[n];
for(i=0;i<n;i++)
{
scanf("%d",&s[i]);
}
m=lcm(s,n);
printf("%d\n",m);
}
}
}