Cod sursa(job #772412)

Utilizator GigelDaTesteTestulSuprem GigelDaTeste Data 29 iulie 2012 16:42:20
Problema Pairs Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.69 kb
#include<fstream>
#define MAX 1000007
#define dim 1000007
using namespace std;


ifstream f("pairs.in");
ofstream g("pairs.out");

long long  nrdp[dim],x,res,n,C[dim],i,j,p[dim],NU[dim];
int main (){
	
	f>>n;
	
	
	for(i=1;i<=n;i++){
		f>>x;
		C[x]++;
	}
	res=(long long)n*(n-1)/2;
	for(i=2;i<MAX;++i){
		
		for(j=2*i;j<MAX;j+=i){
			
			C[i]+=C[j];
			
		}
		if(!p[i]){
			nrdp[i]=1;
			p[i]=1;
			for(j=2*i;j<MAX;j+=i) {
				p[j]=1;
				if((j/i)%i==0)
					NU[j]=1;
				
				nrdp[j]^=1;
			}
			
		}
		if(!NU[i]){
			
			if(nrdp[i])
				res-=(long long )C[i]*(C[i]-1)/2;
			else
				res+=(long long )C[i]*(C[i]-1)/2;
			
		}
	}
	
	g<<res<<"\n";
	return 0;
}