Pagini recente » Cod sursa (job #658238) | Cod sursa (job #584545) | Cod sursa (job #1728892) | Cod sursa (job #1733366) | Cod sursa (job #2720068)
#include <bits/stdc++.h>
#define NMAX 100005
using namespace std;
class InParser{
private:
FILE *fin;
char *buff;
int sp;
char read(){
++sp;
if(sp == 4096){
sp = 0;
fread(buff, 1, 4096, fin);
}
return buff[sp];
}
public:
InParser(const char* nume){
sp = 4095;
buff = new char[4096];
fin = fopen(nume, "r");
}
InParser& operator >> (int &n){
char c;
while(!isdigit(c = read()));
n = c - '0';
while(isdigit(c = read()))
n = n * 10 + c - '0';
return *this;
}
};
InParser fin("puteri.in");
ofstream fout("puteri.out");
typedef long long ll;
int a[NMAX], b[NMAX], c[NMAX], mod[130], fr[65][65][65], n;
ll solve(int i){
memset(mod, 0, sizeof(mod));
memset(fr, 0, sizeof(fr));
for(int j = 0; j <= 128; ++j)
mod[j] = j % i;
ll ans = 0;
int axA, axB, axC;
for(int k = 1; k <= n; ++k){
axA = mod[i - mod[a[k]]];
axB = mod[i - mod[b[k]]];
axC = mod[i - mod[c[k]]];
if(axA <= 64 && axB <= 64 && axC <= 64)
ans += fr[axA][axB][axC];
fr[mod[a[k]]][mod[b[k]]][mod[c[k]]]++;
}
return ans;
}
int main()
{
fin >> n;
for(int i = 1; i <= n; ++i)
fin >> a[i] >> b[i] >> c[i];
ll rez = 0;
for(int i = 2; i <= 128; ++i){
int semn = -1;
int ax = i;
for(int j = 2; j <= i; ++j){
int cn = 0;
while(ax % j == 0){
++cn;
ax /= j;
}
if(cn > 1)
semn = 0;
if(cn == 1)
semn *= -1;
}
if(semn != 0)
rez += semn * solve(i);
}
fout << rez << '\n';
return 0;
}