Codeforces Round#641 Div2 C gcdlcm相关

题意:已知a1,a2……an, 先求两两的lcm,再求lcm的gcd

题解:

gcd1=gcd(lcm(a1,a2),lcm(a1,a3),lcm(a1,a4)……lcm(a1,an))

项都与a1有关,推得gcd1=lcm(a1, gcd(a2,a3……an))

其余同理

#include<bits/stdc++.h>
using namespace std;
#define ll long long
int main()
{
    ll n,x,g,lcm,ans=0;
    cin>>n>>x;
    g=x;
    for(int i=1;i<n;i++){
        cin>>x;
        lcm = (g*x) / __gcd(g,x);//递推求得答案
        ans = __gcd(ans,lcm);
        g=__gcd(g,x);
    }
    cout<<ans;
}

 

posted @ 2020-05-21 12:34  aaaaaaaaaaaaaa123  阅读(111)  评论(0)    收藏  举报