Cod sursa(job #112252)

Utilizator gr33nhumbVoicu Gabriel gr33nhumb Data 4 decembrie 2007 00:20:35
Problema Pairs Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.79 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)*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){ t++; p=p/pc[k];}
	      if(t==0){res=res+(x[i]*(x[i]-1))/2;  pc[0]++; pc[pc[0]]=i;}
	       else{
          if(p==1) { if( t%2==0) res=res-(x[i]*(x[i]-1))/2;
		       else res=res+(x[i]*(x[i]-1))/2;
		     }
		 }    
	}
   }


g<<n*(n-1)/2 - res;
f.close();
g.close();
return 0;
}