思路
一次求出所有数的最小公倍数就行了, a∗b=gcd(a,b)∗lcm(a,b) 。注意用 long long 小心溢出。
代码
#include <cstdio>
using namespace std;
typedef long long LL;
LL gcd(LL a, LL b)
{
return b == 0 ? a : gcd(b, a%b);
}
int main()
{
int t, n, temp;
LL ans;
scanf("%d", &t);
while(t--)
{
scanf("%d%I64d", &n, &ans);
for(int i=2; i<=n; i++)
{
scanf("%d", &temp);
ans = ans/gcd(ans, temp)*temp;
}
printf("%I64d\n", ans);
}
return 0;
}