Cod sursa(job #1750716)

Utilizator andreistanStan Andrei andreistan Data 30 august 2016 20:04:37
Problema Pairs Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("pairs.in");
ofstream g("pairs.out");
const int MAX=1000000;
long long sol;
int N,x,maxx,i,j;
int v[MAX],divp[MAX],square[MAX];
int main()
{
    f>>N;
    while(N--)
    {
        f>>x;
        v[x]=1;
        maxx=max(maxx,x);
    }
    for(i=2; i<=maxx; i++)
        if(!divp[i])
        {
            for(j=i; j<=maxx; j+=i)
            {
                divp[j]++;
                if(1LL*i*i<=maxx && j%(i*i)==0)
                    square[j]=1;
            }
        }
    for(i=1; i<=maxx; i++)
    if(!square[i]){
        x=0;
        for(j=i; j<=maxx; j+=i)
            if(v[j])
                x++;
        if(divp[i]&1)
            sol=sol-1LL*x*(x-1);
        else
            sol=sol+1LL*x*(x-1);
    }
    g<<sol/2;
}