Cod sursa(job #1753293)

Utilizator nurof3nCioc Alex-Andrei nurof3n Data 6 septembrie 2016 12:20:06
Problema Pairs Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.94 kb
#include <iostream>
#include <fstream>
#include <cstdlib>
using namespace std;
ifstream f("pairs.in");
ofstream g("pairs.out");
const int MAXP=1000001;
int N,v[MAXP],ap[MAXP],ciurn[MAXP],ciurp[MAXP],MAX=0;
long long int sol;
int main()
{
    f>>N;
    for(int i=1;i<=N;i++)
    {
        f>>v[i];
        ap[v[i]]=1;
        if(v[i]>MAX) MAX=v[i];
    }
    sol=1LL*N*(N-1)/2;
    for(int i=2; i<=MAX; i++)
    {
        if(ciurn[i]==0)
            for(int j=i; j<=MAX; j+=i)
                ciurn[j]++;
        if(ciurp[i]==0)
        {
            long long k=1ll*i*i;
            for(long long j=k; j<=MAX; j+=k)
                ciurp[j]=1;
            long long rez=0;
            for(int j=i;j<=MAX;j+=i)
                if(ap[j]==1) rez++;
            rez=rez*(rez-1)/2;
            if(ciurn[i]%2==0)
                sol+=rez;
            else
                sol-=rez;
        }
    }
    g<<sol;
    return 0;
}