Pagini recente » Cod sursa (job #2575569) | Cod sursa (job #1402398) | Cod sursa (job #1873116) | Cod sursa (job #2471237) | Cod sursa (job #755549)
Cod sursa(job #755549)
#include<fstream>
#include<cstring>
using namespace std;
const char iname[]="puteri.in";
const char oname[]="puteri.out";
const int maxn=65;
ifstream f(iname);
ofstream g(oname);
int a[maxn][maxn][maxn],i,j,x,y,z,val[maxn*3],n;
unsigned long long rez;
long long calc(int x)
{
int b[maxn][maxn][maxn],i,j,k;
long long rez=0;
memset(b,0,sizeof(b));
for(i=0;i<maxn;++i)
for(j=0;j<maxn;++j)
for(k=0;k<maxn;++k)
b[i%x][j%x][k%x]+=a[i][j][k];
for(i=0;i<min(x,maxn);++i)
for(j=0;j<min(x,maxn);++j)
for(k=0;k<min(x,maxn);++k)
{
int i2=(x-i)%x,j2=(x-j)%x,k2=(x-k)%x;
if(i2<0)
i2+=x;
if(j2<0)
j2+=x;
if(k2<0)
k2+=x;
if(i2<maxn&&j2<maxn&&k2<maxn)
rez+=(long long)b[i][j][k]*(b[i2][j2][k2]-(i==i2&&j==j2%x&&k==k2));
}
return rez;
}
int main()
{
f>>n;
for(i=1;i<=n;++i)
f>>x>>y>>z,++a[x][y][z];
for(i=2;i<=128;++i)
if(val[i]==0)
{
for(j=i*i;j<=128;j+=i*i)
val[j]=-1;
for(j=i;j<=128;j+=i)
if(val[j]!=-1)
++val[j];
rez+=calc(i);
}
else
if(val[i]>0)
if(val[i]&1)
rez+=calc(i);
else
rez-=calc(i);
g<<rez/2<<"\n";
}