Pagini recente » Monitorul de evaluare | Cod sursa (job #1168931) | Cod sursa (job #2017534) | Cod sursa (job #373856) | Cod sursa (job #70879)
Cod sursa(job #70879)
#include<stdio.h>
long int a[130][130][130],i,j,k,m,n,x[100001],y[100001],z[100001],sol,s[130],solp;
int semne();
long int card(long int ic);
int main()
{ FILE *f,*g;
f=fopen("puteri.in","r");
g=fopen("puteri.out","w");
fscanf(f,"%ld",&n);
for(i=1;i<=n;i++)
fscanf(f,"%ld%ld%ld",&x[i],&y[i],&z[i]);
semne();
for(i=0;i<128;i++)
if(s[i])
{ solp=card(i);
sol=sol+s[i]*solp;
}
fprintf(g,"%ld\n",sol);
fcloseall();
return 0;
}
int semne()
{ s[2]=1;s[3]=1,s[5]=1;s[7]=1;
s[11]=1;s[13]=1;s[17]=1;s[19]=1;
s[23]=1;s[29]=1;s[31]=1;s[37]=1;
s[41]=1;s[43]=1;s[47]=1;s[53]=1;
s[59]=1;s[61]=1;s[67]=1;s[71]=1;
s[73]=1;s[79]=1;s[83]=1;s[89]=1;
s[97]=1;s[101]=1;s[103]=1;s[107]=1;
s[109]=1;s[113]=1;s[127]=1;s[30]=1;
s[42]=1;s[66]=1;s[78]=1;s[102]=1;
s[114]=1;s[70]=1;s[110]=1;s[105]=1;
s[6]=-1;s[10]=-1;s[14]=-1;s[22]=-1;
s[26]=-1;s[34]=-1;s[38]=-1;s[46]=-1;
s[58]=-1;s[62]=-1;s[74]=-1;s[82]=-1;
s[86]=-1;s[94]=-1;s[106]=-1;s[118]=-1;
s[122]=-1;s[15]=-1;s[21]=-1;s[33]=-1;
s[39]=-1;s[51]=-1;s[57]=-1;s[69]=-1;
s[87]=-1;s[93]=-1;s[111]=-1;s[123]=-1;
s[35]=-1;s[55]=-1;s[65]=-1;s[85]=-1;
s[95]=-1;s[115]=-1;s[77]=-1;s[91]=-1;
s[119]=-1;
return 0;
}
long int card(long int ic)
{
long int i1,i2,i3,j1,j2,j3,ii,ret,aa;
for(i1=0;i1<ic;i1++)
for(i2=0;i2<ic;i2++)
for(i3=0;i3<ic;i3++)
a[i1][i2][i3]=0;
for(ii=1;ii<=n;ii++)
a[x[ii]%ic][y[ii]%ic][z[ii]%ic]++;
for(i1=0;;i1++)
{ j1=(ic-i1)%ic;
if(i1>j1)break;
if(i1<j1)
{ for(i2=0;i2<ic;i2++)
for(i3=0;i3<ic;i3++)
{ j2=(ic-i2)%ic;
j3=(ic-i3)%ic;
ret+=a[i1][i2][i3]*a[j1][j2][j3];
}
}
else
for(i2=0;;i2++)
{
j2=(ic-i2)%ic;
if(i2>j2) break;
if(i2<j2)
{ for(i3=0;i3<ic;i3++)
{j3=(ic-i3)%ic;
ret+=a[i1][i2][i3]*a[j1][j2][j3];
}
}
else
for(i3=0;;i3++)
{ j3=(ic-i3)%ic;
if(i3>j3) break;
if(i3<j3)
ret+=a[i1][i2][i3]*a[j1][j2][j3];
else
{
aa=a[i1][i2][i3];
ret+=(aa*(aa-1))/2;
}
}
}
}
return ret;
}