Cod sursa(job #111899)

Utilizator gr33nhumbVoicu Gabriel gr33nhumb Data 2 decembrie 2007 14:04:16
Problema Pairs Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.92 kb
#include<iostream.h>
#include<fstream.h>

long v[1000],x[1000];
long n;





int main(){
 int t;
 long i,j,max,p,res=0,u,q,k;

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;
	  k=2;
	   if(p==2){ t++; p/=2;}
	   else if(p==3){ t++; p/=3;}
	   else{
	   while(k<=i/2 || p!=1){
	     if(p%k==0){ if((p/k)%k==0) break;
			 t++;
			 p=p/k;
		       }
			 k++;
				}
	       }

            if(p==1) { if(t%2==0) res-=(x[i]*(x[i]-1))/2;
                       else res+=(x[i]*(x[i]-1))/2;
                     }      
        }
   }        
                          
   
 
cout<<n*(n-1)/2 - res;
f.close();
g.close();
return 0;
}