Cod sursa(job #114742)

Utilizator hellraizerChiperi Matei hellraizer Data 15 decembrie 2007 17:32:28
Problema Pairs Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <stdio.h>

#define N_MAX 100001

int N,M,MAX,res;
char v[1000001];

void citire(){
	int i,x;
	FILE *fin=fopen("pairs.in","r");
	fscanf(fin,"%d",&N);
	for (i=1;i<=N;i++){
		fscanf(fin,"%d",&x);
		v[x]=1;
		if (x>MAX)
			MAX=x;
	}
	fclose(fin);
}

void prelucrare(){
	int i,x,p,nr,j,bun;
	for (i=2;i<=MAX;i++){
		x=0;
		for (j=i;j<=MAX;j+=i)
			if (v[j])
				x++;
		nr=0,p=i,j=2,bun=1;
		if (x){
			while ((p>1)&&bun){
				if (p%j==0){
					p/=j;
					nr++;
					if (p%j==0)
						bun=0;
				}
				else
					j++;
			}
			if (bun)
				if (nr%2)
					res+=x*(x-1)/2;
				else
					res-=x*(x-1)/2;
		}
	}
	res=N*(N-1)/2-res;
}

void afisare(){
	FILE *fout=fopen("pairs.out","w");
	fprintf(fout,"%d\n",res);
	fclose(fout);
}

int main(){
	citire();
	prelucrare();
	afisare();
	return 0;
}