Pagini recente » Cod sursa (job #782869) | Cod sursa (job #83631) | Cod sursa (job #116885) | Cod sursa (job #1617005) | Cod sursa (job #2413503)
#include <bits/stdc++.h>
std::ifstream in ("puteri.in") ;
std::ofstream out ("puteri.out") ;
/*--------------MAXS--------------*/
const int MV = 1 << 17 ;
const int MC = 130 ;
const int HHM = 69 ;
/*-----------STARTER_PACK-------------*/
int n, a[MV], b[MV], c[MV] ;
int bit[MC], l[MC] ;
int fr[HHM][HHM][HHM] ;
bool ciur[MC] ;
long long sol ;
/*--------MOD----------*/
inline long long solve(int mod) {
int i, ra, rb, rc ;
long long sol = 0 ;
memset(fr, 0, sizeof fr) ;
for (i = 0 ; i <= 128 ; ++ i) {
l[i] = i % mod ;
}
for (i = 0 ; i < n ; ++i) {
ra = l[mod - l[a[i]]] ;
rb = l[mod - l[b[i]]] ;
rc = l[mod - l[c[i]]] ;
if (ra <= 64 && rb <= 64 && rc <= 64) {
sol += fr[ra][rb][rc] ;
}
fr[l[a[i]]][l[b[i]]][l[c[i]]] ++ ;
}
return sol ;
}
/*--------PROGRAM----------*/
int main() {
in >> n ;
int i, j ;
for (i = 0 ; i < n ; ++ i)
in >> a[i] >> b[i] >> c[i] ;
for (i = 2 ; i <= 128 ; ++ i)
bit[i] = 1 ;
for (i = 2 ; i <= 128 ; ++ i) {
if (!ciur[i]) {
for (j = i ; j <= 128 ; j += i) {
bit[j] *= -1 ;
ciur[j] = 1 ;
}
for (j = i * i ; j <= 128 ; j += i * i) {
bit[j] = 0 ;
}
}
if (bit[i] != 0)
sol -= bit[i] * solve(i) ;
}
out << sol ;
return 0 ;
}