这道题整整提交了8次才AC。
Post Code:
#include<iostream>
using namespace std;
__int64 gcd(__int64 x,__int64 y){//用辗转相除法求2个数的最大公约数
int r;
if(x<y){
r=x;
x=y;
y=r;
}
while(r!=0){
r=x%y;
x=y;
y=r;
}
return x;
}
int main(){
int n;
__int64 lcm;//用64位的整数,防止溢出
while(scanf("%d",&n)!=EOF){
__int64 a[100]={0};
lcm=1;
for(int i=0;i<n;i++){
scanf("%I64d",&a[i]);
lcm=lcm*a[i]/gcd(lcm,a[i]);//先求出最先2个数的lcm,然后与后一个数再求lcm,依次类推。
}
printf("%I64d\n",lcm);
}
return 0;
}