Cod sursa(job #2500782)

Utilizator mjmilan11Mujdar Milan mjmilan11 Data 28 noiembrie 2019 17:47:03
Problema Pairs Scor 50
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.99 kb
#include <bits/stdc++.h>

using namespace std;

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

const int NMAX = 1000005;
int a[NMAX],nr_prim[NMAX];
bool frecv[NMAX],prim[NMAX];

void ciur()
{
    for(int i=2;i<NMAX;i++)
    {
        if(nr_prim[i]==0)
        {
            for(int j=i;j<NMAX;j+=i)
            {
                if(j%(i*i)==0) prim[j]=1;
                nr_prim[j]++;
            }
        }
    }
}

int main()
{
    ciur();
    int n;
    fin >> n;
    int maxim=0;
    for(int i=1;i<=n;i++)
    {
        fin >> a[i];
        if(a[i]>maxim) maxim=a[i];
        frecv[a[i]]=1;
    }
    int rasp=0;
    for(int i=2;i<=maxim;i++)
    {
        if(prim[i]==0)
        {
            int nr=0;
            for(int j=i;j<=maxim;j+=i)
                nr+=frecv[j];
            if(nr_prim[i]%2==0)
                 rasp-=((nr-1)*nr)/2;
            else rasp+=((nr-1)*nr)/2;
        }
    }
    fout << (n-1)*n/2 - rasp;
    return 0;
}