您的位置:首页 > 其它

杭电ACM 2028 Lowest Common Multiple Plus

2012-12-28 01:06 465 查看
Lowest Common Multiple Plus

Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)

Total Submission(s): 22488 Accepted Submission(s): 9135

Problem Description

求n个数的最小公倍数。

Input

输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。

Output

为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。你可以假设最后的输出是一个32位的整数。

Sample Input

2 4 6

3 2 5 7

Sample Output

12

70

#include <stdio.h>
int gcd(int x, int y){
if ( y == 0 ){
return x;
}
int i = x&1, j = y&1;
if ( i ){
if ( j ){
return x>y ? gcd(y, x-y) : gcd(x, y-x);
}
else {
return gcd(x, y>>1);
}
}
else {
if ( j ){
return gcd(x>>1, y);
}
else {
return gcd(x>>1, y>>1)<<1;
}
}
}
int lcm(int x, int y){
return x/gcd(x, y)*y;
}
int main(){
int z, r, t;
while ( ~scanf("%d", &z) ){
scanf("%d", &r);
while ( --z ){
scanf("%d", &t);
r = lcm(r, t);
}
printf("%d\n", r);
}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: