Cod sursa(job #2677078)

Utilizator gasparrobert95Gaspar Robert Andrei gasparrobert95 Data 25 noiembrie 2020 19:21:35
Problema Pairs Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <bits/stdc++.h>
#define ll long long
#define LMAX 1000005
using namespace std;
ifstream fin("date.in");
ofstream fout("date.out");
ll n, perechi, v[100005], fv[LMAX], fv2[LMAX], fv3[LMAX];
std::vector<ll> prim;

void ciur() {
    for (ll i = 2; i * i <= LMAX; i += 2) {
        if (fv[i])
            continue;
        prim.push_back(i);
        for (ll j = i * i; j <= LMAX; j += i)
            fv[j] = 1;
        if (i == 2)
            --i;
    }
    return;
}

int main() {
    ciur();
    fin >> n;
    for (int i = 1; i <= n; ++i) {
        fin >> v[i];
        ll divs = 0;
        for (int j = 0; j < prim.size() && prim[j] <= v[i]; ++j) {
            if (v[i] % prim[j] != 0)
                continue;
            ++divs;
            perechi += fv2[prim[j]];
            ++fv2[prim[j]];
        }
        perechi -= fv3[v[i]] * divs;
        ++fv3[v[i]];
    }
    fout << n * (n - 1) / 2 - perechi;
    return 0;
}