Cod sursa(job #1156303)

Utilizator lehman97Dimulescu David lehman97 Data 27 martie 2014 16:00:50
Problema Pairs Scor 40
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include <stdio.h>

long long  sol,nr,c[1000010];
int max=0,i,j,n,q;
bool a[1000010],b[1000010],ok[1000010];

FILE *f=fopen("pairs.in","r");
FILE *g=fopen("pairs.out","w");

int main()
{
	fscanf(f,"%d",&n);
	for (i=1;i<=n;i++)
	{
		fscanf(f,"%d",&q);
		a[q]=1;
		if(q>max)max=q;
	}
	for (i=2;i<=max;i++)
		if (!(b[i]))
			for (j=1;j<=max/i;j++)
			{
				b[i*j]=1;
				if (!(j%i)) ok[i*j]=1;
				c[i*j]++;
			}
	for (i=2;i<=max;i++)
		if (!ok[i])
		{
			nr=0;
			for (j=1;j<=max/i;j++)
				if (a[i*j]) nr++;
			if (c[i]%2) sol+=(long long)(nr*(nr-1)/2);
				else sol-=(long long)(nr*(nr-1)/2);
		}
    sol=((long long)(n*(n-1)/2)-sol);
	fprintf(g,"%lld",sol);
	return 0;
}