Pagini recente » Cod sursa (job #727954) | Cod sursa (job #2547377) | Cod sursa (job #2910710) | Cod sursa (job #2370225) | Cod sursa (job #1891077)
#include <cstring>
#include <fstream>
#include <string>
using namespace std;
ifstream fin("puteri.in");
ofstream fout("puteri.out");
typedef long long i64;
const int nmax= 100000;
const int nrmax= 128;
const int pmax= 64;
bool p[nrmax+1];
int a[nmax+1], b[nmax+1], c[nmax+1], v[nrmax+1], d[pmax+1][pmax+1][pmax+1], sign[nrmax+1];
string buffer;
string::iterator buffer_it;
void read_int_nn( int &x ) {
for ( ; *buffer_it>'9' || *buffer_it<'0'; ++buffer_it ) ;
for ( x= 0; *buffer_it>='0' && *buffer_it<='9'; ++buffer_it ) {
x= x*10+*buffer_it-'0';
}
}
int main( ) {
getline( fin, buffer, (char)0 );
buffer_it= buffer.begin();
int n;
read_int_nn(n);
for ( int i= 1; i<=n; ++i ) {
read_int_nn(a[i]), read_int_nn(b[i]), read_int_nn(c[i]);
}
i64 sol= 0;
for ( int i= 2; i<=nrmax; ++i ) {
sign[i]= -1;
}
for ( int i= 2; i<=nrmax; ++i ) {
if ( p[i]==0 ) {
for ( int j= i; j<=nrmax; j+= i ) {
sign[j]*= -1;
}
for ( int j= i*i; j<=nrmax; j+= i*i ) {
sign[j]= 0;
}
for ( int j= i*i; j<=nrmax; j+= i ) {
p[j]= 1;
}
}
if ( sign[i]!=0 ) {
memset(d, 0, sizeof d);
i64 ans= 0;
for ( int j= 0; j<=nrmax; ++j ) {
v[j]= j%i;
}
for ( int j= 1; j<=n; ++j ) {
if ( v[i-v[a[j]]]<=pmax && v[i-v[b[j]]]<=pmax && v[i-v[c[j]]]<=pmax ) {
ans= (i64)ans+d[v[i-v[a[j]]]][v[i-v[b[j]]]][v[i-v[c[j]]]];
}
++d[v[a[j]]][v[b[j]]][v[c[j]]];
}
sol= sol+(i64)sign[i]*ans;
}
}
fout<<sol<<"\n";
return 0;
}