Mai intai trebuie sa te autentifici.
Cod sursa(job #114741)
Utilizator | Data | 15 decembrie 2007 17:31:07 | |
---|---|---|---|
Problema | Pairs | Scor | 0 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.8 kb |
#include <stdio.h>
#define N_MAX 100001
int N,M,MAX,res;
char v[1000001];
void citire(){
int i,x;
FILE *fin=fopen("pairs.in","r");
fscanf(fin,"%d",&N);
for (i=1;i<=N;i++){
fscanf(fin,"%d",&x);
v[x]=1;
if (x>MAX)
MAX=x;
}
fclose(fin);
}
void prelucrare(){
int i,x,p,nr,j,bun;
for (i=2;i<=MAX;i++){
x=0;
for (j=i;j<=MAX;j+=i)
if (v[j])
x++;
nr=0,p=i,j=2,bun=1;
while ((p>1)&&bun){
if (p%j==0){
p/=j;
nr++;
if (p%j==0)
bun=0;
}
else
j++;
}
if (bun)
if (nr%2)
res+=x*(x-1)/2;
else
res-=x*(x-1)/2;
}
res=N*(N-1)/2-res;
}
void afisare(){
FILE *fout=fopen("pairs.out","w");
fprintf(fout,"%d\n",res);
fclose(fout);
}
int main(){
citire();
prelucrare();
afisare();
return 0;
}