Cod sursa(job #304031)

Utilizator funkydvdIancu David Traian funkydvd Data 10 aprilie 2009 19:07:36
Problema Pairs Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include<fstream.h>
ifstream f1 ("pairs.in");
ofstream f2 ("pairs.out");
int apar[1000001],calc[1000001],max=-1000001;
void calc_prim()
{
	long long i,j;
	calc[1]=-1;
	for(i=2;i<=max;i++)
	if(calc[i]==0)
	for(j=i;j<=max;j+=i)
	if(calc[j]!=-1)
	{
	  calc[j]++;
	  if((j/i)%i==0) calc[j]=-1;
	}
}
int main()
{
	long long i,j,div,n,k,nr=0;
	f1>>n;
	for(i=1;i<=n;i++)
	{
	 f1>>k;
	 if(k>max)
	 max=k;
	 apar[k]=1;
	}
	calc_prim();
	for(i=2;i<=max;i++)
	{
	  div=0;
	  if(calc[i]<=0) continue;
	   else for(j=i;j<=max;j=j+i) if(apar[j]) div++;
	  if(calc[i]%2==1) nr+=div*(div-1)/2;
	   else nr-=div*(div-1)/2;

	}
	nr=n*(n-1)/2-nr;
	f2<<nr;
	return 0;
}