Pagini recente » Cod sursa (job #1710761) | Cod sursa (job #317680) | Cod sursa (job #1148853) | Cod sursa (job #1018885) | Cod sursa (job #1790198)
#include <fstream>
#include <cstring>
using namespace std;
ifstream fin("puteri.in");
ofstream fout("puteri.out");
const int MAXN = 100005;
const int MAXABC = 133;
using LL = long long;
int N, a[MAXN], b[MAXN], c[MAXN];
int n[MAXABC/2][MAXABC/2][MAXABC/2];
LL rez;
int m[MAXABC];
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, x;
LL sgn;
int op1, op2, op3;
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;
memset(n, 0, sizeof(n));
for ( i = 0; i <= 124; i++ )
m[i] = i % d;
for ( i = 1; i <= N; i++ )
{
p1 = ( d - m[a[i]] );
p2 = ( d - m[b[i]] );
p3 = ( d - m[c[i]] );
if ( p1 == d ) p1 = 0;
if ( p2 == d ) p2 = 0;
if ( p3 == d ) p3 = 0;
if ( p1 < 65 && p2 < 65 && p3 < 65 )
rez = ( rez + sgn*( 1LL * n[p1][p2][p3] ) );
// else
// rez += sgn*( n[p1][p2][p3] );
n[m[a[i]]][m[b[i]]][m[c[i]]]++;
}
/* for ( p1 = 0; p1 < d; p1++ )
for ( p2 = 0; p2 < d; p2++ )
for ( p3 = 0; p3 < d; p3++ )
if ( n[p1][p2][p3] )
{
op1 = ( d - p1 ) % d;
op2 = ( d - p2 ) % d;
op3 = ( d - p3 ) % d;
if ( !( p1 == op1 && p2 == op2 && p3 == op3 ) )
rez += sgn * n[p1][p2][p3] * n[op1][op2][op3];
else
rez += sgn * n[p1][p2][p3] * ( n[op1][op2][op3] - 1 );
}
for ( i = 1; i <= N; i++ )
n[(a[i] % d)][(b[i] % d)][(c[i] % d)]--; */
}
// rez /= 2;
}