这个题是水题没有疑问。但是这个题目也给我提醒了。
a,b都是32整形没错。但是a*b存在溢出的情况。所以在a*b/gcd的画就会出错,
但是改写成a/gcd*b就可以AC,在以后不管是学习还是写题的过程中都要注意这
样的情况。考虑到溢出的问题,正确的运用好乘除法的顺序。
#include <iostream>
#include <math.h>
using namespace std ;
int gcd(int a,int b){
if (a>b)
return b==0?a:gcd(b,a%b);
else
return a==0?b:gcd(a,b%a);
}
int main(){
int n;
cin>>n;
while(n--){
int m;
cin>>m;
int ans,ch;
for(int i = 1 ; i <= m ; i++){
if(i==1) cin>>ans;
else{
cin >> ch;
int g = gcd(ans,ch);
ans = ans/g*ch;
}
}
cout << ans << endl;
}
return 0;
}