Pagini recente » Clasament oni2007_clasa10 | Cod sursa (job #804107) | Cod sursa (job #1203816) | Cod sursa (job #2940650) | Cod sursa (job #209259)
Cod sursa(job #209259)
#include<stdio.h>
#define P 129
#define N 100002
int n,i,x[N],y[N],z[N],p[P],np,s[P],j,k,a[P][P][P],mm[P],op[P];
void readd(),solve(),semne();
int numar();
int main()
{ readd();
solve();
return 0;
}
void readd()
{
freopen("puteri.in","r",stdin);
freopen("puteri.out","w",stdout);
scanf("%d",&n);
for(i=1;i<=n;i++)scanf("%d%d%d",&x[i],&y[i],&z[i]);
}
void semne()
{ for(i=2;i<=128;i++)
if(!p[i])
for(j=i+i;j<=128;j+=i)
p[j]=1;
for(i=2;i<=128;i++)
if(!p[i])p[++np]=i;
for(i=1;i<=np;i++)s[i]=1;
for(i=1;i<=np-1;i++)
{ if(p[i]*p[i+1]>128)break;
for(j=i+1;j<=np;j++)
{ if(p[i]*p[j]>128)break;
s[p[i]*p[j]]=-1;
}
}
for(i=1;i<=np-2;i++)
{ if(p[i]*p[i+1]*p[i+2]>128)break;
for(j=i+1;j<=np-1;j++)
{ if(p[i]*p[j]*p[j+1]>128)break;
for(k=j+1;k<=np;k++)
{ if(p[i]*p[j]*p[k]>128)break;
s[p[i]*p[j]*p[k]]=1;
}
}
}
}
void solve()
{ int cate,sol;
semne();
sol=0;
for(k=0;k<128;k++)
if(s[k])
{ cate=numar();
sol=sol+s[k]*cate;
}
printf("%d",sol);
}
int numar()
{ int r1,r2,r3,q1,q2,q3,ret,v1,v2;
for(i=0;i<128;i++)mm[i]=i%k;
for(i=1;i<k;i++)op[i]=k-i;
for(i=1;i<=n;i++)
{ r1=mm[x[i]];r2=mm[y[i]];r3=mm[z[i]];
a[r1][r2][r3]++;
}
ret=0;
for(r1=0;r1<k;r1++)
{ q1=op[r1];
if(r1>q1)break;
if(r1<q1)
{ for(r2=0;r2<k;r2++)
{ q2=op[r2];
for(r3=0;r3<k;r3++)
{ q3=op[r3];
v1=a[r1][r2][r3];
v2=a[q1][q2][q3];
ret+=v1*v2;
a[r1][r2][r3]=a[q1][q2][q3]=0;
}
}
continue;
}
for(r2=0;r2<k;r2++)
{ q2=op[r2];
if(r2>q2)break;
if(r2<q2)
{ for(r3=0;r3<k;r3++)
{ q3=op[r3];
v1=a[r1][r2][r3];
v2=a[q1][q2][q3];
ret+=v1*v2;
a[r1][r2][r3]=a[q1][q2][q3]=0;
}
continue;
}
for(r3=0;r3<k;r3++)
{ q3=op[r3];
if(r3>q3)break;
if(r3<q3)
{ v1=a[r1][r2][r3];
v2=a[q1][q2][q3];
ret+=v1*v2;
a[r1][r2][r3]=a[q1][q2][q3]=0;
continue;
}
v1=a[r1][r2][r3];
ret+=(v1*(v1-1))/2;
a[r1][r2][r3]=0;
}
}
}
return ret;
}