Pagini recente » Cod sursa (job #1986896) | Cod sursa (job #167502) | Cod sursa (job #1057747) | Borderou de evaluare (job #698049) | Cod sursa (job #25393)
Cod sursa(job #25393)
#include<stdio.h>
#include<math.h>
#include<fstream.h>
#define inmax 64000
#define amax 62
#define prmax 19
#define fin "puteri.in"
#define fout "puteri.out"
unsigned int t[amax][amax][amax][prmax],prim[21];
long long nr=0;
int long n,cc[prmax];
void primi()
{float rad;
int i,d,p;
for(i=2;i<=64;i++)
{for(d=2,p=1,rad=sqrt(i);d<=rad;d++)
if(!(i%d))
p=0;
if(p)
prim[++prim[0]]=i;
}
}
void citeste_rez()
{int a,b,c,d;
int long i,r;
freopen(fin,"r",stdin);
scanf("%ld",&n);
for(i=1;i<=n;i++)
{scanf("%d%d%d",&a,&b,&c);
for(d=1;d<=prim[0];d++)
{r=t[(prim[d]-a%prim[d])%prim[d]][(prim[d]-b%prim[d])%prim[d]][(prim[d]-c%prim[d])%prim[d]][d-1];
nr+=r;
if(r==inmax)
nr+=cc[d-1];
}
for(d=1;d<=prim[0];d++)
{if(t[a%prim[d]][b%prim[d]][c%prim[d]][d-1]==inmax)
cc[d-1]++;
else
t[a%prim[d]][b%prim[d]][c%prim[d]][d-1]++;
}
}
}
void afiseaza()
{freopen(fout,"w",stdout);
printf("%lld",nr);
fclose(stdout);
}
int main()
{primi();
citeste_rez();
afiseaza();
return 0;
}