Pagini recente » Cod sursa (job #1087840) | Cod sursa (job #1004702) | Istoria paginii runda/simulare_oji_bv_11-12 | Istoria paginii utilizator/robert.poziumschi | Cod sursa (job #677630)
Cod sursa(job #677630)
#include<stdio.h>
#include<cstring>
#define maxn 100005
#define maxval 70
FILE*f=fopen("puteri.in","r");
FILE*g=fopen("puteri.out","w");
int n,i,j,conf;
int a[maxn][3],ciur[maxval<<1],nr[maxval<<1][maxval<<1][maxval<<1],r[3];
int main () {
fscanf(f,"%d",&n);
int val_max = 0;
for ( i = 1 ; i <= n ; ++i ){
fscanf(f,"%d %d %d",&a[i][0],&a[i][1],&a[i][2]);
for ( j = 0 ; j < 3 ; ++j ){
if ( a[i][j] > val_max )
val_max = a[i][j];
}
}
val_max = val_max << 1;
for ( i = 2 ; i <= val_max ; ++i ){
if ( !ciur[i] ){
ciur[i] = 1;
for ( j = i + i ; j <= val_max ; j += i ){
if ( ciur[j] != -1 )
++ciur[j];
if ( !(j % (i*i)) )
ciur[j] = -1;
}
}
}
long long sol = 0;
for ( conf = 2 ; conf <= val_max ; ++conf ){
if ( ciur[conf] == -1 )
continue ;
memset(nr,0,sizeof(nr));
long long nrper = 0;
for ( i = 1 ; i <= n ; ++i ){
for ( j = 0 ; j < 3 ; ++j ){
r[j] = a[i][j] % conf;
}
nrper += nr[(conf-r[0])%conf][(conf-r[1])%conf][(conf-r[2])%conf];
++nr[r[0]][r[1]][r[2]];
}
if ( ciur[conf] & 1 )
sol += nrper;
else
sol -= nrper;
}
fprintf(g,"%lld\n",sol);
fclose(f);
fclose(g);
return 0;
}