Cod sursa(job #2676738)

Utilizator gasparrobert95Gaspar Robert Andrei gasparrobert95 Data 24 noiembrie 2020 21:37:24
Problema Pairs Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.08 kb
#include <bits/stdc++.h>
#define ll long long
#define LMAX 1000005
using namespace std;
ifstream fin("pairs.in");
ofstream fout("pairs.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]];
    }
    ll a = 1, b = 1;
    for (ll j = 2; j <= n; ++j) {
        a *= j;
        if (j <= n - 2)
            b *= j;
    }
    fout << (a / (2 * b)) - perechi;
    return 0;
}