Pagini recente » Cod sursa (job #2418724) | Cod sursa (job #1688483) | Cod sursa (job #1424499) | Cod sursa (job #2585269) | Cod sursa (job #27360)
Cod sursa(job #27360)
#include<stdio.h>
#include<math.h>
#include<fstream.h>
#define nm 130
#define nmax 100005
#define fin "puteri.in"
#define fout "puteri.out"
unsigned int nr[nm][nm][nm],a[nmax],b[nmax],c[nmax];
int long n;
long long sol;
void rezolva()
{int long d,i1,k,p;
int ad,bd,cd,i;
for(i=2;i<=nm-2;i++)
{i1=i;
for(d=2,k=0,p=1;d<=sqrt(i1);d++)
if(!(i1%d))
{i1/=d;
if(!(i1%d))
{p=0;
break;
}
k++;
}
if(i1>1)
k++;
if(p)
{//aflu restul impartirii la i
//memset(nr,0,sizeof(nr));
if(k%2)
for(d=1;d<=n;d++)
{sol+=nr[(i-a[d]%i)%i][(i-b[d]%i)%i][(i-c[d]%i)%i];
nr[a[d]%i][b[d]%i][c[d]%i]++;
}
else
for(d=1;d<=n;d++)
{sol-=nr[(i-a[d]%i)%i][(i-b[d]%i)%i][(i-c[d]%i)%i];
nr[a[d]%i][b[d]%i][c[d]%i]++;
}
for(d=1;d<=n;d++)
nr[a[d]%i][b[d]%i][c[d]%i]=0;
}
}
}
int main()
{int long i;
freopen(fin,"r",stdin);
scanf("%ld",&n);
for(i=1;i<=n;i++)
scanf("%u%u%u",&a[i],&b[i],&c[i]);
rezolva();
freopen(fout,"w",stdout);
printf("%lld",sol);
fclose(stdout);
return 0;
}