Cod sursa(job #1968420)

Utilizator LeVladzCiuperceanu Vlad LeVladz Data 17 aprilie 2017 18:00:27
Problema Pairs Scor 50
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.93 kb
#include <fstream>

using namespace std;

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

int n,i,j,maxim;
int v[1000002];
int x[1000002];
int f[1000002];

int main()
{
    fin >> n;
    for (i=1; i<=n; i++)
    {
        fin >> v[i];
        if (v[i] > maxim)
            maxim = v[i];
        f[v[i]] = 1;
    }
    long long res = 0;
    for (i=2; i<maxim; i++)
        if (x[i] == 0)
            for (j=i; j<=maxim; j+=i)
                x[j]++;
    for (i=2; i*i<=maxim; i++)
        for (j=i*i; j<=maxim; j+=i*i)
            x[j] = -1;
    for (i=2; i<=maxim; i++)
    {
        if (x[i] == -1)
            continue;
        int nr = 0;
        for (j=i; j<=maxim; j+=i)
            if (f[j] == 1)
                nr++;
        if (x[i]%2 == 0)
            res -= nr*(nr-1)/2;
        else
            res += nr*(nr-1)/2;
    }
    long long t = n*(n-1)/2;
    fout << t-res;
    return 0;
}