Pagini recente » Articole | Profil Zito | Monitorul de evaluare | Diferente pentru winter-challenge-2008/runda-2/solutii intre reviziile 12 si 7 | Cod sursa (job #496790)
Cod sursa(job #496790)
#include <cstdio>
#define nmax 100010
int n, a[nmax], b[nmax], c[nmax], v[66][66][66];
long long sol;
int main()
{
freopen("puteri.in","r",stdin);
freopen("puteri.out","w",stdout);
scanf("%d",&n);
int i, k, ck, t, f, d, s, x, y, z;
for (i=1; i<=n; i++)
scanf("%d %d %d",&a[i],&b[i],&c[i]);
for (k=2; k<=128; k++)
{
ck=k;
t=0;
for (d=2; d*d<=k; d++)
{
f=0;
while (!(ck%d))
{
f++;
ck/=d;
}
if (f>1)
{
t=-1;
break;
} else
if (f==1) t++;
}
if (ck>1 && t>-1) t++;
if (t>-1)
{
s=0;
for (x=0; x<=64; x++)
for (y=0; y<=64; y++)
for (z=0; z<=64; z++) v[x][y][z]=0;
for (i=1; i<=n; i++)
{
x=(k-(a[i]%k));
if (x==k) x=0;
y=(k-(b[i]%k));
if (y==k) y=0;
z=(k-(c[i]%k))%k;
if (z==k) z=0;
if (x<=64 && y<=64 && z<=64)
s+=v[x][y][z];
x=a[i]%k;
y=b[i]%k;
z=c[i]%k;
v[x][y][z]++;
}
//for (i=1; i<=n; i++) v[a[i]%k][b[i]%k][c[i]%k]=0;
if (t%2) sol+=s; else sol-=s;
}
}
printf("%d\n",sol);
}