Cod sursa(job #335489)

Utilizator ConsstantinTabacu Raul Consstantin Data 30 iulie 2009 02:11:18
Problema Pairs Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.64 kb
#include<stdio.h>


 int a[1000010],viz[1000010];
 long long i,j,Max,n,m,res;

void ciur(){
long int i,j;

a[1]=-1;
for(i=2;i<=Max;i++)
	if(a[i]==0)
		for(j=i;j<=Max;j+=i)
		if(a[j]!=-1){
			a[j]++;
		if((j/i)%i==0)
			a[j]=-1;}
	}


int main(){

freopen("pairs.in","r",stdin);
freopen("pairs.out","w",stdout);

scanf("%lld",&n);

for(i=1;i<=n;i++)
	{scanf("%lld",&j);
	viz[j]=1;
	if(j>Max)Max=j;
	}
	
ciur();


for(i=2;i<=Max;i++){
	m=0;
	if(a[i]>0){
		for(j=i;j<=Max;j+=i)
			if(viz[j])m++;
	if(a[i]%2)res+=(m*(m-1))/2;
	else
		res-=(m*(m-1))/2;}
	}
n=n*(n-1)/2;
n-=res;
printf("%lld",n);

return 0;}