Cod sursa(job #112303)

Utilizator gr33nhumbVoicu Gabriel gr33nhumb Data 4 decembrie 2007 13:14:10
Problema Pairs Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<fstream.h>
 long v[100001],x[1000001],pc[1000001];
int main(){

 long n;
 long i,j,p,res=0,q,k,t;
 long max;
 pc[0]=2;
 pc[1]=2;
 pc[2]=3;

ifstream f("pairs.in");
ofstream g("pairs.out");
  f>>n;
  max=-1;
  for(i=1;i<=n;i++){   f>>q;
		       v[q]=1; if(q>max) max=q;
		   }

  for(i=1;i<=max;i++){
       for(j=1;j<=max/i;j++){
	    if(v[i*j]==1) x[i]++;
	}
   }

  for(i=2;i<=max;i++){
     p=i;
     if(x[p]){
	 t=0;
      for(k=1;k<=pc[0];k++)
	if(p%pc[k]==0){ if((p/pc[k])%pc[k]==0){ t=-1; break;}
			t++; p=p/pc[k];
			if(p==1) break;}

	      if(t==0){res=res+(x[i]*(x[i]-1))/2;  pc[0]++; pc[pc[0]]=i;}
	       else{
	  if(p==1) { if(t>0 && t%2==0) res=res-(x[i]*(x[i]-1))/2;
		       else if(t>0) res=res+(x[i]*(x[i]-1))/2;
		     }
		 }    
	}
   }



g<<n*(n-1)/2 - res;

f.close();
g.close();
return 0;
}