Cod sursa(job #1012795)

Utilizator RaduGabriel2012Dinu Radu RaduGabriel2012 Data 19 octombrie 2013 17:27:41
Problema Pairs Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.78 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[100005],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[j]==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* (n*(n-1)/2)-sol;
    return 0;

}