Cod sursa(job #1012786)

Utilizator RaduGabriel2012Dinu Radu RaduGabriel2012 Data 19 octombrie 2013 17:21:16
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,v[100005],nrdiv[1000005],pr[1000005];
bool ok[100005],dist[1000005];
long long sol=0;
int main()
{ int i,j;
    f>>n;
  for(i=1;i<=n;i++)
   {f>>v[i];
    ok[v[i]]=1;
    vmax=max(vmax,v[i]);
   }

   for(i=2;i<=vmax;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;

}