Pagini recente » Cod sursa (job #1974738) | Cod sursa (job #353753) | Cod sursa (job #805836) | Cod sursa (job #1554319) | Cod sursa (job #1790157)
#include <fstream>
using namespace std;
ifstream fin("puteri.in");
ofstream fout("puteri.out");
const int MAXN = 100005;
const int MAXABC = 125;
int N, a[MAXN], b[MAXN], c[MAXN];
int n[MAXABC][MAXABC][MAXABC];
int rez;
void Read();
void Solve();
int main()
{
Read();
Solve();
fout << rez;
fin.close();
fout.close();
return 0;
}
void Read()
{
int i;
fin >> N;
for ( i = 1; i <= N; i++ )
{
fin >> a[i] >> b[i] >> c[i];
}
}
void Solve()
{
int i, j, p1, p2, p3, d;
int sgn, x;
for ( d = 2; d <= 124; d++ )
{
x = d; sgn = -1;
for ( i = 2; x > 1; i++ )
{
if ( x % i == 0 )
{
x /= i;
if ( x % i == 0 ) break;
sgn = (sgn == -1 ? 1 : -1);
}
}
if ( x > 1 ) continue;
// cout << d << ' ' << sgn; cin.get();
for ( i = 1; i <= N; i++ )
n[(a[i] % d)][(b[i] % d)][(c[i] % d)]++;
for ( i = 1; i <= N; i++ )
{
n[(a[i] % d)][(b[i] % d)][(c[i] % d)]--;
p1 = ( d - (a[i] % d) ) % d;
p2 = ( d - (b[i] % d) ) % d;
p3 = ( d - (c[i] % d) ) % d;
// if ( !( p1 == a[i] && p2 == b[i] && p3 == c[i] ) )
rez += sgn*( n[p1][p2][p3] );
// else
// rez += sgn*( n[p1][p2][p3] );
}
}
}