Cod sursa(job #550823)

Utilizator borsoszalanBorsos Zalan borsoszalan Data 9 martie 2011 22:36:27
Problema Pairs Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <stdio.h>
long long 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=1;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("%lld",n*(n-1)/2-s);	
	return 0;
}