Cod sursa(job #494465)

Utilizator lianaliana tucar liana Data 21 octombrie 2010 18:35:23
Problema Pairs Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.68 kb
#include <stdio.h>
long int i, n, a, max, j, nm, s;
char v[1000003], nfp[1000003], p2[1000003], prim[1000003];

int main()
{
	freopen("pairs.in","r",stdin);
	freopen("pairs.out","w",stdout);
	scanf("%d",&n);
	for (i=1;i<=n;i++)
	{
		scanf("%d",&a);
		v[a]=1;
		if (a>max)
			max=a;
	}
	for (i=2;i<=max;i++)
		if (prim[i]==0)
			for (j=2;j<=max/i;j++)
			{
				prim[j*i]=1;
				if (j%i==0)
					p2[j*i]=1;
				nfp[j*i]=(nfp[j*i]+1)%2;
			}
	for (i=2;i<=max;i++)		
		if (p2[i]==0)
		{
			nm=0;
			for (j=1;j<=max/i;j++)
				if (v[i*j]==1)
					nm=nm+1;
			if (nfp[i]==0)	
				s=s+nm*(nm-1)/2;
				else
					s=s-nm*(nm-1)/2;
		}		
	printf("%ld",n*(n-1)/2-s);	
}