求法
求a1,a2,…,an的最小共倍数,先求(a1,a2)的最小公倍数a12,再求(a12,a3)的最小公倍数a123,依次递推下去
注意点
最重要的就是防止溢出(特别是题目的数据大时)
上代码
typedef unsigned long long ll;
ll exgcd(ll a,ll b)
{
if(b==0) return a;
exgcd(b,a%b);
}
int main()
{
ll a[1005],n,ans;
cin>>n;
for(int i=0;i<n;i++) cin>>a[i];
ans=a[0];
for(int i=1;i<n;i++)
{
ll r=exgcd(ans,a[i]);
///递推,最重要的一步
ans=ans/r*a[i];///先除后乘,防止溢出
}
cout<<ans;
}