Cod sursa(job #1289150)

Utilizator Yasin_ibraimIbraim Yasin Yasin_ibraim Data 9 decembrie 2014 16:27:25
Problema Pairs Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#include<fstream>
#include<bitset>

using namespace std;

#define N 1000000
bitset <N> p,n_ok;
int f[N],viz[N],x;
unsigned long long M;

int main()
{
    ifstream fin("pairs.in");
    ofstream fout("pairs.out");
    int n;
    fin>>n;
    for(int i=1;i<=n;i++)
    {
            fin>>x;
            viz[x]=1;
            if(x>M)
            {
                   M=x;
            }
    }
    for(int i=2;i<=M;i++)
    {
            if(!p[i])
            {
                     f[i]=1;
                     for(int j=2;j<=M/i;++j)
                     {
                             p[i*j]=1;
                             if(j%i==0) n_ok[i*j]=1;
                             f[i*j]++;
                     }
            }
            
    }
    unsigned long long sol=0,nr;
    for(int i=2;i<=M;++i)
    {
            if(!n_ok[i])
            {
                        nr=0;
                        for(int j=1;j<=M/i;j++)
                        {
                                if(viz[i*j]) nr++;}
                                if(f[i]%2) sol+=nr*(nr-1)/2;
                                else sol-=nr*(nr-1)/2;
                        
            }
    }
    fout<<sol<<endl;
    sol=n*(n-1)/2-sol;
    fout<<sol;
}