Cod sursa(job #2376786)

Utilizator mirunazMiruna Zavelca mirunaz Data 8 martie 2019 17:39:28
Problema Pairs Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.88 kb
#include <bits/stdc++.h>

using namespace std;

int main() {
    ifstream cin("pairs.in");
    ofstream cout("pairs.out");
    
    int n, m; cin >> n; m = 1e6;
    vector<int> v(m + 1, 0);
    for (int i = 0; i < n; ++i) {
        int x; cin >> x;
        v[x] = 1;
    }
    
    
    vector<int> mu(m + 1, 1), prime(m + 1, 1);
    for (int d = 2; d <= m; ++d) {
        if (!prime[d]) continue;
        for (int i = d; i <= m; i += d) {
            if (i % (1LL * d * d) == 0)
                mu[i] = 0;
            prime[i] = 0;
            mu[i] *= -1;
        }
    }
    
    long long ans = 0;
    for (int d = 1; d <= m; ++d) {
	if (mu[d] == 0) continue;
        int cnt = 0;
        for (int i = d; i <= m; i += d) {
            cnt += v[i];
        }
        ans += 1LL * mu[d] * cnt * (cnt - 1) / 2;
    }
    cout << ans << endl;
    
    return 0;
}