Pagini recente » Rating Brozba Robert (you1996) | Istoria paginii runda/runda_de_verificare/clasament | Cod sursa (job #474704) | Rating Mazarianu Petrina (petrinamazarianu) | Cod sursa (job #215162)
Cod sursa(job #215162)
#include<stdio.h>
#include<string.h>
struct mmmmm{
int x,y,z;
}nr[100100];
int diviz[130],N,so;
int a[130][130][130],mod[130][130];
void divizor(){
int i,j,n=129;
for(i=2;i<n;++i){
if(!diviz[i])
for(j=i;j<n;j+=i){
++diviz[j];
if(j%(i*i)==0)
diviz[j]=-100000;
}
}
}
void calc(int p){
int i;
for(i=0;i<N;++i)
++a[mod[nr[i].x][p]][mod[nr[i].y][p]][mod[nr[i].z][p]];
}
int proces(int p){
int i,j,k,sol=0;
for(i=0;i<p;++i){
for(j=0;j<p;++j){
for(k=0;k<p;++k){
if(i==mod[p-i][p] && j==mod[p-j][p] && k==mod[p-k][p])
sol+=(a[i][j][k]*(a[i][j][k]-1));
else
sol+=a[i][j][k]*a[mod[p-i][p]][mod[p-j][p]][mod[p-k][p]];
}
}
}
return sol/2;
}
void modulo(){
int i,j;
for(i=1;i<130;++i){
for(j=1;j<130;++j)
mod[i][j]=i%j;
}
}
int main(){
freopen("puteri.in","r",stdin);
freopen("puteri.out","w",stdout);
int i;
scanf("%d",&N);
for(i=0;i<N;++i)
scanf("%d%d%d",&nr[i].x,&nr[i].y,&nr[i].z);
divizor();
modulo();
for(i=2;i<=128;++i){
if(diviz[i]>=0){
memset(a,0,sizeof(a));
calc(i);
if(diviz[i]%2)
so+=proces(i);
else
so-=proces(i);
}
}
printf("%d\n",so);
fclose(stdin);
fclose(stdout);
return 0;
}