Lowest Common Multiple Plus
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Submission(s): 33702 Accepted Submission(s): 13766
Problem Description 求n个数的最小公倍数。
Input 输入包含多个测试实例,每个测试实例的开始是一个正整数n,然后是n个正整数。
Output 为每组测试数据输出它们的最小公倍数,每个测试实例的输出占一行。你可以假设最后的输出是一个32位的整数。
Sample Input
2 4 6
3 2 5 7
Sample Output
12
70
Author lcy
Source C语言程序设计练习(五)
Recommend lcy | We have carefully selected several similar problems for you: 2032 2031 2029 2030 2035
Statistic | Submit | Discuss | Note
正常的水题吧。
先用简单的辗转相除法求出最大公约数,再求出最小公倍数。
注意需要使用unsigned才可AC。
#include
using namespace std;
unsigned getcount(unsigned a, unsigned b){
unsigned c;
unsigned m = a;
unsigned n = b;
if (a < b){
unsigned temp = a;
a = b;
b = temp;
}
while (b){
c = a%b;
a = b;
b = c;
}
return (m*n) / a;
}
int main(){
unsigned n, res, temp;
while (cin >> n){
if (n > 0){
cin >> temp;
res = temp;
n--;
}
while (n--){
cin >> temp;
res = getcount(res, temp);
}
cout << res << endl;
}
return 0;
}
|