Cod sursa(job #2577403)

Utilizator vlad082002Ciocoiu Vlad vlad082002 Data 9 martie 2020 11:15:50
Problema Pairs Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <fstream>
#include <iostream>
using namespace std;

ifstream fin("pairs.in");
ofstream fout("pairs.out");

long long n;
int nrdiv[1000005], maxnr;
bool apare[1000005], a[1000005];

void citire() {
    fin >> n;
    int x;
    for(int i = 1; i <= n; i++) {
        fin >> x;
        apare[x] = 1;
        maxnr = max(maxnr, x);
    }
}

void solve() {
    long long res = n*(n-1)/2;
    for(int i = 2; i <= maxnr; i++) {
        if(!nrdiv[i]) {
            for(int j = i; j <= maxnr; j += i)
                nrdiv[j]++;
            for(int j = i*i; j <= maxnr; j += i*i)
                a[j] = 1;
        }
        if(!a[i]) {
            long long scad = 0;
            for(int j = i; j <= maxnr; j += i)
                scad += apare[j];
            if(nrdiv[i]%2)
                res -= scad*(scad-1)/2;
            else
                res += scad*(scad-1)/2;
        }
    }
    fout << res;
}

int main() {
    citire();
    solve();
}