Cod sursa(job #113883)

Utilizator sigridMaria Stanciu sigrid Data 11 decembrie 2007 20:35:13
Problema Pairs Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<fstream.h>
#include<math.h>
#define dim 1000001
int v[dim],x[dim],prim[dim];
int main()
{ifstream f("pairs.in");
 ofstream g("pairs.out");
 unsigned long n,i,j,cont,rez,xx,max=0,jum;
 f>>n;
 for(i=1;i<=n;i++)
  {f>>xx;
   v[xx]=1;
   if(xx>max) max=xx;
  }
 int ok=1;
 prim[2]=prim[3]=1;
 for(i=5;i<=max;i=i+2)
  {ok=1;
   jum=sqrt(i);
   for(j=3;j<=jum;j=j+2) if(i%j==0) {ok=0;break;}
   prim[i]=ok;
  }

 for(i=1;i<=max;i++)
  {jum=max/i;
   for(j=1;j<=jum;j++)
    if(v[i*j]) x[i]++;
  }
 prim[1]=1;
 //rez=0;
 rez=x[1]*(x[1]-1)/2;
 for(i=2;i<=max;i++)
  {if(prim[i]) rez-=x[i]*(x[i]-1)/2;
    else
     {cont=1;
      jum=i/2;//sqrt(i);
      if(i%2==0) cont++;
      for(j=3;j<=jum;j=j+2)
       {if(i%j==0)
	 {if(prim[j]) cont++;}
       }
      if(cont%2==0) rez-=x[i]*(x[i]-1)/2;
       else rez+=x[i]*(x[i]-1)/2;
     }
  }
f.close();
g<<rez<<'\n';
g.close();
return 0;
}