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; }

浙公网安备 33010602011771号