求法
求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;
}
本文介绍了一种求多个整数最小公倍数的方法:通过递推的方式逐步求解每两个数的最小公倍数,并采取了先除后乘的策略来避免数据溢出的问题。该方法适用于解决涉及大整数的最小公倍数问题。
2711

被折叠的 条评论
为什么被折叠?



