Pagini recente » Cod sursa (job #139292) | Cod sursa (job #1466081)
# include <bits/stdc++.h>
# define ll long long
using namespace std;
ifstream fi("puteri.in");
ofstream fo("puteri.out");
const int pw[] = {-1,1};
const int nmax = 1 << 7;
int s[nmax][nmax][nmax];
int ok(int p)
{
bool k = 0;
for (int i = 2;i*i <= p;++i)
if (!(p%i))
{
p /= i;
if (!(p%i)) return 0;
k = 1 - k;
}
if (p > 1) k = 1 - k;
return pw[k];
}
int main(void)
{
int n;
fi>>n;
int * a;
int * b;
int * c;
a = new int [n+1];
b = new int [n+1];
c = new int [n+1];
ll * ans;
ans = new ll [nmax+5];
for (int i = 1;i <= n;++i) fi>>a[i]>>b[i]>>c[i];
for (int mod = 2;mod <= nmax;++mod)
if (ok(mod))
{
for (int i = 1;i <= n;++i)
s[a[i]%mod][b[i]%mod][c[i]%mod]++;
for (int i = 1;i <= n;++i)
{
int x = mod - (a[i]%mod);
int y = mod - (b[i]%mod);
int z = mod - (c[i]%mod);
if (x == mod) x = 0;
if (y == mod) y = 0;
if (z == mod) z = 0;
int ix = mod - x;
int iy = mod - y;
int iz = mod - z;
if (ix == mod) ix = 0;
if (iy == mod) iy = 0;
if (iz == mod) iz = 0;
if (x == ix && iy == y && z == iz)
ans[mod] += 1ll * (s[x][y][z] - 1) * s[x][y][z] / 2;
else
ans[mod] += 1ll * s[x][y][z] * s[ix][iy][iz];
s[x][y][z] = s[ix][iy][iz] = 0;
}
}
ll rs = 0;
for (int i = 2;i <= nmax;++i) rs += ok(i) * ans[i];
return fo << rs << '\n',0;
}