Cod sursa(job #1940256)

Utilizator Mircea_DonciuDonciu Mircea Mircea_Donciu Data 26 martie 2017 15:21:23
Problema Pairs Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <fstream>
#define maxN 1000005
using namespace std;
int p[maxN],ap[maxN];
int v[maxN];
int n,i,j,x,val;
long long sol;
int main()
{
    ifstream f("pairs.in");
    ofstream g("pairs.out");
    f>>n;
    for(i=1; i<=n; i++)
    {
        f>>j;
        ap[j]++;
    }
    for(i=2; i<=maxN; i++)
    if(!p[i])
    for(j=i; j<=maxN; j+=i)
    p[j]=i;
    v[1]=1;
    for(i=2; i<=maxN; i++)
    if(p[i]!=p[i/p[i]])
        v[i]=(-1)*v[i/p[i]];
    for(i=1; i<=maxN; i++)
    if(v[i])
    {
        for(j=i+i; j<=maxN; j+=i)
            ap[i]+=ap[j];
        sol+=v[i]*(ap[i]*(ap[i]-1LL))/2;
    }
    g<<sol<<'\n';
    f.close(); g.close();
    return 0;
}