很明显这个题只能用 long long
先用数学思维考虑,求两个数的最小公倍数,就要先求出他们的最大公倍数,再用最大公倍数去除这两个数的积,多个数就循环往复即可~
#include<iostream>
using namespace std;
long long Gcd(long long a, long long b){
long long m;
while(b){
if (a<b) swap(a, b);
m=b;
b=a%b;
a=m;
}
return a;
}
int main()
{
int n;
long long a[10000];
long long gcd;
long long lcm;
while (cin >> n){
for (int i=0;i<n;i++){
cin >> a[i];
}
for(int i=0;i<n-1;i++){
gcd=Gcd(a[i],a[i+1]);
a[i+1]=(a[i]/gcd)*a[i+1];
lcm=a[i+1];
}
cout << lcm << endl;
}
return 0;
}