Cod sursa(job #918093)

Utilizator brainiac24Octavian Movilianu brainiac24 Data 18 martie 2013 17:02:13
Problema Pairs Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <iostream>
#include <fstream>
using namespace std;

bool h[1000002];
long long m[1000001];

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

    long long n, i, j, x, q, s;
    fin>>n;
    s=n*(n-1)/2;

    m[0]=0;
    for(i=1; i<=n; i++)
    {
        fin>>x;
        h[x]=1;
        if(x>m[0]) m[0]=x;
    }

    for(i=2; i<=m[0]; i++)
        if(!m[i])
            for(j=i; j<=m[0]; j+=i) m[j]++;

    for(i=2; i*i<=m[0]; i++)
        for(j=i*i; j<=m[0]; j+=i*i) m[j]=-1;

    for(i=2; i<=m[0]; i++)
        if(m[i]!=-1)
        {
            q=0;
            for(j=i; j<=m[0]; j+=i)
                if(h[j]) q++;
            s-=((m[i]%2)*2-1)*q*(q-1)/2;
        }
    fout<<s;
    return 0;
}