Problem DescriptionThe least common multiple (LCM) of a set of positive integers is the smallest positive integer which is divisible by all the numbers in the set.For example,the LCM of 5,7 and 15 is 105.InputInput will consist of multiple problem in

来源:学生作业帮助网 编辑:六六作业网 时间:2024/11/25 19:46:07
ProblemDescriptionTheleastcommonmultiple(LCM)ofasetofpositiveintegersisthesmallestpositiveintegerwhi

Problem DescriptionThe least common multiple (LCM) of a set of positive integers is the smallest positive integer which is divisible by all the numbers in the set.For example,the LCM of 5,7 and 15 is 105.InputInput will consist of multiple problem in
Problem Description
The least common multiple (LCM) of a set of positive integers is the smallest positive integer which is divisible by all the numbers in the set.For example,the LCM of 5,7 and 15 is 105.
Input
Input will consist of multiple problem instances.The first line of the input will contain a single integer indicating the number of problem instances.Each instance will consist of a single line of the form m n1 n2 n3 ...nm where m is the number of integers in the set and n1 ...nm are the integers.All integers will be positive and lie within the range of a 32-bit integer.
Output
For each problem instance,output a single line containing the corresponding LCM.All results will lie in the range of a 32-bit integer.
Sample Input
2
3 5 7 15
6 4 10296 936 1287 792 1
Sample Output
105
10296
我的代码
#include
int lcm(int m,int n)
{
\x05int p,r;
\x05p=m*n;
\x05r=m%n;
\x05while(r)
\x05{
\x05\x05m=n;
\x05\x05n=r;
\x05\x05r=m%n;
\x05}
\x05return p/n;
}
int main ()
{
\x05long temp,m,n,i,a[100];
\x05while scanf("%d",&m))
\x05{
\x05\x05for (i=0;i

Problem DescriptionThe least common multiple (LCM) of a set of positive integers is the smallest positive integer which is divisible by all the numbers in the set.For example,the LCM of 5,7 and 15 is 105.InputInput will consist of multiple problem in
杭电1096?我的已经ac了,关键在于 lcm不能是a*b/c 而是a/c*b, 否则会溢出.参考下面:
#include
#include
int lcm(int a, int b)
{
int r;
int x, y;
if (a > b)
{
a = a + b;
b = a - b;
a = a - b;
}
x = a, y = b;
while (a)
{
r = b % a;
b = a;
a = r;
}
return x / b * y;
}
int main()
{
int n, m, a, b;
scanf("%d", &n);
while (n--)
{
scanf("%d", &m);
b = 1;
while(m--)
{
scanf("%d", &a);
b = lcm(a, b);
}
printf("%d\n", b);
}
return 0;
}