Cod sursa(job #1957871)

Utilizator tifui.alexandruTifui Ioan Alexandru tifui.alexandru Data 7 aprilie 2017 20:17:02
Problema Pairs Scor 100
Compilator cpp Status done
Runda trainingtsa2 Marime 0.7 kb
#include <bits/stdc++.h>
#define Nmax 1000005
using namespace std;
ifstream f("pairs.in");
ofstream g("pairs.out");
bool x[Nmax];
int v[Nmax];
int main()
{long long n,i,j,nr,rez=0,val,MAX=-1;
f>>n;
for(i=1;i<=n;i++)
{
    f>>val;
    x[val]=true;
    MAX=max(MAX,val);
}
for(i=2;i<=MAX;i++)
    if(!v[i])
        for(j=i;j<=MAX;j+=i)
        v[j]++;
for(i=2;i*i<=MAX;i++)
    for(j=i*i;j<=MAX;j+=i*i)
    v[j]=-1;
for(i=2;i<=MAX;i++)
    {
        if(v[i]>-1)
        {
            nr=0;
            for(j=i;j<=MAX;j+=i)
                nr+=x[j];
            if(v[i]%2==1) rez+=(nr*(nr-1)/2);
            else rez-=(nr*(nr-1)/2);
        }
    }
g<<n*(n-1)/2-rez;

    return 0;
}