Pagini recente » Cod sursa (job #3201635) | Cod sursa (job #2301931) | Cod sursa (job #298938) | Cod sursa (job #2047939) | Cod sursa (job #1330112)
#include <fstream>
#include <algorithm>
#include <algorithm>
#include <vector>
#include <cstring>
using namespace std;
ifstream fin("puteri.in");
ofstream fout("puteri.out");
struct tr {
int a, b, c;
tr(int _a = 0, int _b = 0, int _c = 0) {
a = _a;
b = _b;
c = _c;
}
};
vector<tr> v;
int d[65][65][65];
int get(int x) {
int ans = 0;
for(int d = 2; d <= x; d++) {
int p = 0;
while(x % d == 0) {
x /= d;
p++;
}
if(p > 1) {
return -1;
}
if(p == 1) {
ans++;
}
}
return ans;
}
int main() {
int n;
fin >> n;
v.reserve(n + 1);
for(int i = 1; i <= n; i++) {
int a, b, c;
fin >> a >> b >> c;
v.push_back(tr(a, b, c));
}
long long ans = 0;
for(int i = 2; i <= 128; i++) {
int val = get(i);
if(val != -1) {
int sg = 1;
memset(d, 0, sizeof(d));
if(val % 2 == 0) {
sg = -1;
}
for(auto it : v) {
int a = (i - it.a % i) % i;
int b = (i - it.b % i) % i;
int c = (i - it.c % i) % i;
if(a < 65 && b < 65 && c < 65) {
ans += sg * d[a][b][c];
}
d[it.a % i][it.b % i][it.c % i]++;
}
}
}
fout << ans;
return 0;
}