Pagini recente » Cod sursa (job #1615324) | Cod sursa (job #2606671) | Cod sursa (job #1443034) | Cod sursa (job #2244912) | Cod sursa (job #677642)
Cod sursa(job #677642)
#include<stdio.h>
#include<cstring>
#define maxn 100005
#define maxval 70
#define file_size 1100000
FILE*f=fopen("puteri.in","r");
FILE*g=fopen("puteri.out","w");
int n,i,j,conf,ch;
int a[maxn][3],ciur[maxval<<1],nr[maxval][maxval][maxval],r[3];
char buff[file_size+5];
inline int next () {
int r = 0;
while ( buff[ch] >= '0' && buff[ch] <= '9' ){
r = r * 10 + buff[ch] - '0';
++ch;
}
++ch;
return r;
}
int main () {
fread(buff,file_size,1,f);
//fscanf(f,"%d",&n);
n = next();
int val_max = 0;
for ( i = 1 ; i <= n ; ++i ){
//fscanf(f,"%d %d %d",&a[i][0],&a[i][1],&a[i][2]);
a[i][0] = next(); a[i][1] = next(); a[i][2] = next();
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 ;
long long nrper = 0;
for ( i = 1 ; i <= n ; ++i ){
for ( j = 0 ; j < 3 ; ++j ){
r[j] = a[i][j] % conf;
}
int v1 = r[0] ? conf - r[0] : 0;
int v2 = r[1] ? conf - r[1] : 0;
int v3 = r[2] ? conf - r[2] : 0;
if ( v1 < 65 && v2 < 65 && v3 < 65 )
nrper += nr[v1][v2][v3];
++nr[r[0]][r[1]][r[2]];
}
for ( i = 1 ; i <= n ; ++i ){
for ( j = 0 ; j < 3 ; ++j ){
r[j] = a[i][j] % 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;
}