Pagini recente » Cod sursa (job #2006187) | Cod sursa (job #1685090) | Cod sursa (job #1489278) | Cod sursa (job #1139095) | Cod sursa (job #484750)
Cod sursa(job #484750)
#include <stdio.h>
#include <string.h>
#define Nmax 100002
#define Vmax 64+64+1
#define Rmax 65
int a[Nmax],b[Nmax],c[Nmax];
int p[Vmax],prim[Vmax],Nr[Vmax];
int r[Rmax][Rmax][Rmax],uzz[Rmax][Rmax][Rmax];
int N,z;
void ciur(){
int i,j;
for(i=2;i<Vmax;++i)
if( p[i]==0 ){
prim[++z]=i;
for(j=i; j<Vmax; j+=i)
if( p[j]!=-1)
++p[j];
for(j=i*i; j<Vmax; j+=i*i)
p[j]=-1;
}
}
int main(){
int i,j,aa,bb,cc,rez=0,aa2,bb2,cc2;
freopen("puteri.in","r",stdin);
freopen("puteri.out","w",stdout);
scanf("%d",&N);
for(i=1;i<=N;++i) scanf("%d%d%d",&a[i],&b[i],&c[i]);
ciur();
for(i=2;i<Vmax;++i){
memset(r,0,sizeof(r));
memset(uzz,0,sizeof(uzz));
for(j=1;j<=N;++j)
++r[a[j]%i][b[j]%i][c[j]%i];
for(j=1;j<=N;++j)
if( ! uzz[a[j]%i][b[j]%i][c[j]%i] ){
aa=a[j]%i; bb=b[j]%i; cc=c[j]%i;
aa2=(i-aa)%i; bb2=(i-bb)%i; cc2=(i-cc)%i;
if( aa2<Rmax && bb2<Rmax && cc2<Rmax ){
uzz[aa][bb][cc]=1;
uzz[aa2][bb2][cc2]=1;
if( aa==aa2 && bb==bb2 && cc==cc2 )
Nr[i] += r[aa][bb][cc]*(r[aa][bb][cc]-1)/2;
else Nr[i] += r[aa][bb][cc]*r[aa2][bb2][cc2];
}
}
}
for(i=2; i<Vmax; ++i)
if(p[i] != -1 )
if( p[i] & 1) rez += Nr[i];
else rez -= Nr[i];
printf("%d\n",rez);
fclose(stdin); fclose(stdout);
return 0;
}