题目描述
2个正整数的最小公倍数,大家应该都知道怎么求了,比如,10和14的最小公倍数就是70。
现在增加点难度,如果给你多个正整数,你还会计算最小公倍数吗?
比如,5、7、15这三个数的最小公倍数就是105.
输入
输入数据第一行是一个正整数C(C<10),表示有C组测试用例。
接下来C行,每行是一组测试数据。
每组数据首先是一个正整数N(1<N<30),表示本组数据有N个正整数,然后接着是N个正整数。
输出
请输出每组数据的最小公倍数,每组数据输出一行。
题目保证所有的结果都在32位整数范围内。
样例输入 Copy
2 3 5 7 15 6 4 10296 936 1287 792 1
样例输出 Copy
105 10296
#include<iostream>
using namespace std;
int fun(int a, int b) {
int x, y;
if (a > b) {
x = a;
y = b;
}
else {
x = b;
y = a;
}
if (a == 0 || b == 0)return 0;
while (x % y) {
int temp = x % y;
x = y;
y = temp;
}
return a / y * b;
}
int answer[10];
int main() {
int C; cin >> C;
for (int i = 0; i < C; i++) {
int N; cin >> N; N--;
int result; cin >> result;
while (N--) {
int num; cin >> num;
result = fun(result, num);
}
answer[i] = result;
}
for (int i = 0; i < C; i++) {
cout << answer[i];
if (i != C - 1)cout << endl;
}
return 0;
}
一定要先a/y再*b不然可能超出范围