Pagini recente » Cod sursa (job #2558578) | Cod sursa (job #692033) | Cod sursa (job #217902) | Cod sursa (job #1717593) | Cod sursa (job #1410393)
#include<cstdio>
int n,i,j,a,vmax,x[1001000],y[1001000];
long long s;
FILE *f,*g;
int maxim(int a,int b){
if(a>b)
return a;
return b;
}
int main(){
f=fopen("pairs.in","r");
g=fopen("pairs.out","w");
fscanf(f,"%d",&n);
for(i=1;i<=n;i++){
fscanf(f,"%d",&a);
vmax=maxim(vmax,a);
x[a]=1;
}
for(i=2;i<=vmax;i++){
if(y[i]&&y[i]!=-1){
a=0;
for(j=i;j<=vmax;j+=i){
a+=x[j];
}
if(y[i]%2)
s+=1LL*a*(a-1)/2;
else
s-=1LL*a*(a-1)/2;
}
if(y[i]==0){
a=0;
for(j=i;j<=vmax;j+=i){
a+=x[j];
}
for(j=i+i;j<=vmax;j+=i){
if(y[j]!=-1)
y[j]++;
if( j % (i*i) == 0 )
y[j]=-1;
}
s+=1LL*(a-1)*a/2;
}
}
fprintf(g,"%lld",1LL*n*(n-1)/2-s);
fclose(f);
fclose(g);
return 0;
}