Pagini recente » Cod sursa (job #1441641) | Monitorul de evaluare | Cod sursa (job #72667) | Cod sursa (job #208834) | Cod sursa (job #2102766)
#include <iostream>
#include <fstream>
using namespace std;
const int nmax=100005;
const int nm=64;
int ap[64][64][64];
int a[nmax],b[nmax],c[nmax],d[70],e[70];
long long pairs,tot;
int n,i,j,mod,x,y,z;
int inv(int num)
{
if(num==0) return 0;
return mod-num;
}
int main()
{
ifstream f("puteri.in");
ofstream g("puteri.out");
f>>n;
for(i=1;i<=n;i++)
{
f>>a[i]>>b[i]>>c[i];
}
for(i=2;i<=nm;i++)
if(d[i]==0)
{
for(j=i;j<=nm;j+=i)
{
if(d[j]!=-1)d[j]++;
if(j%(i*i)==0) d[j]=-1;
}
}
for(mod=2;mod<=nm;mod++)
if(d[mod]!=-1)
{
pairs=0;
for(i=1;i<=nm;i++)
{
e[i]=e[i-1]+1;
if(e[i]==mod)
e[i]=0;
}
for(i=1;i<=n;i++)
{
x=e[a[i]];y=e[b[i]];z=e[c[i]];
pairs+=1LL*ap[inv(x)][inv(y)][inv(z)];
ap[x][y][z]++;
}
for(i=1;i<=n;i++)
{
x=e[a[i]];y=e[b[i]];z=e[c[i]];
ap[x][y][z]--;
}
if(d[mod]%2) tot+=1LL*pairs;
else tot-=1LL*pairs;
}
g<<tot;
return 0;
}