Pagini recente » Cod sursa (job #463319) | Cod sursa (job #954597) | Cod sursa (job #1997126) | Cod sursa (job #702858) | Cod sursa (job #2397727)
#include <fstream>
#include <cstring>
using namespace std;
ifstream in("puteri.in");
ofstream out("puteri.out");
const int NMAX = 1e2 + 1e2;
int n;
int i, j;
int x[NMAX], y[NMAX], z[NMAX];
int dp[65][65][65];
int m[135], s[135];
long long rasp;
void check(int mod, int s) {
int i, a, b, c;
memset(dp, 0, sizeof(dp));
for(i = 1; i <= 128; i++)
m[i] = i % mod;
for(i = 1;i <= n; i++) {
a = m[mod - m[x[i]]];
b = m[mod - m[y[i]]];
c = m[mod - m[z[i]]];
if(a <= 64 && b <= 64 && c <= 64)
rasp += dp[a][b][c] * s;
dp[m[x[i]]][m[y[i]]][m[z[i]]]++;
}
}
bool isp(int t)
{
for(int i=2;i*i<=t;++i)
if (t%i==0)
return 0;
return 1;
}
int main()
{
in >> n;
for(int i = 1; i <= n; i++)
in >> x[i] >> y[i] >> z[i];
for(int i = 2; i <= 128; i++)
if(isp(i) != 0)
s[i]=1;
for(int i = 2; i <= 128; i++)
for(int j = 2; j <= 128; j++)
if(i != j && isp(i) && isp(j) && i * j <= 128)
s[i * j] = -1;
s[30] = s[42] = 1;
s[66] = s[70] = 1;
s[78] = s[102] = 1;
s[105] = s[110] = 1;
s[114] = 1;
for(int i = 2; i <= 128; i++) {
if(s[i]) {
check(i, s[i]);
}
}
out << rasp << '\n';
in.close();
out.close();
return 0;
}