Cod sursa(job #1012802)

Utilizator RaduGabriel2012Dinu Radu RaduGabriel2012 Data 19 octombrie 2013 17:34:37
Problema Pairs Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 kb
#include <iostream>
#include <fstream>
using namespace std;
ifstream f("pairs.in");
ofstream g("pairs.out");
int n,vmax=0,nrdiv[1000005],pr[1000005];
bool ok[1000005],dist[1000005];
long long sol=0;
int main()
{ int i,j,el;
    f>>n;
  for(i=1;i<=n;i++)
   {f>>el;
    ok[el]=1;
    vmax=max(vmax,el);
   }

   for(i=2;i<=vmax;i++)
    if (!pr[i])
    for(j=i;j<=vmax;j+=i)
      pr[j]++;

  for(i=2;i*i<=vmax;i++)
    if (pr[i]==1)
    for(j=i*i;j<=vmax;j+=i*i)
      dist[j]=1;

  for(i=2;i<=vmax;i++)
   if (!dist[i])
   for(j=i;j<=vmax;j+=i)
     if (ok[j]) nrdiv[i]++;


   for(i=2;i<=vmax;i++)
    if (pr[i]%2==0)
      sol-=1LL*nrdiv[i]*(nrdiv[i]-1)/2;
     else
      sol+=1LL*nrdiv[i]*(nrdiv[i]-1)/2;

   g<<1LL* (1LL* n*(n-1)/2)-sol;
    return 0;

}