写代码时,要注意各种数据类型表示的范围,求最小公倍数,如果求的数值比较大时,就要注意超出表示范围的可能,数据开大一点。
//WA
#include<iostream>
using namespace std;
long long GCD1(long long, long long);
long long GCD2(long long, long long);
long long LCM(long long, long long);
int main()
{
long long n;
long long m;
long long val1;
long long re;
cin>>n;
while(n--)
{
cin>>m;
re = 1;
while(m--)
{
cin>>val1;
re = LCM(re,val1);
}
cout<<re<<endl;
}
return 0;
}
long long LCM(long long m, long long n)
{
return m*n/GCD2(m,n);
}
long long GCD1(long long m, long long n)
{
long long val;
if(m >= n)
{
val = m % n;
if(val == 0)
{
return n;
}
m = n;
n = val;
}
else
{
val = n % m;
if(val == 0)
{
return m;
}
n = m;
m = val;
}
//这里一定要写return 忘记了return就会报错的
return GCD1(m, n);
}
long long GCD2(long long m, long long n)
{
long long val;
do
{
if(m >= n)
{
val = m % n;
//记录下更小的n
m = n;
}
else
{
val = n % m;
}
n = val;
}while(val != 0);
return m;
}