这个题需要注意的就是在计算最小公倍数的过程中数的范围有可能超过32位整数,所以我用了—int64位。
#include<stdio.h>
#include<math.h>
__int64 gcd(__int64 a,__int64 b){
__int64 c,f1,f2;
f1 = a;
f2 = b;
while(b!=0){
c = a%b;
a = b;
b = c;
}
return f1*f2/a;
}
int main(){
__int64 n,m,s,lcm,i;
scanf("%I64d",&n);
while(n--){
scanf("%I64d",&m);
lcm = 1;
for(i=0; i<m; i++){
scanf("%I64d",&s);
lcm = gcd(lcm,s);
}
printf("%I64d\n",lcm);
}
return 0;
}