CF2172F Cluster Computing System 题解
因为参与求最大公约数的数越多,最大公约数越小,所以一定是尽量跨度大,所以要么连到
#include <bits/stdc++.h>
#define int long long
using namespace std;
const int N = 2e5 + 5;
int n, a[N], g[N], g2[N], res;
signed main()
{
cin >> n;
for (int i = 1; i <= n; i ++ ) scanf("%lld", &a[i]);
g[1] = a[1];
for (int i = 2; i <= n; i ++ ) g[i] = __gcd(a[i], g[i - 1]);
g2[n] = a[n];
for (int i = n - 1; i >= 1; i -- ) g2[i] = __gcd(a[i], g2[i + 1]);
for (int i = 2; i < n; i ++ ) res += min(g[i], g2[i]);
cout << res + min(g[n], g2[1]) << endl;
return 0;
}