Pagini recente » Cod sursa (job #2147240) | Cod sursa (job #1026800) | Cod sursa (job #318930) | Cod sursa (job #3239931) | Cod sursa (job #1728497)
#include <cstdio>
#include <cstring>
#include <cctype>
#define MAXN 100000
#define MAXA 64
int A[MAXN+1],B[MAXN+1],C[MAXN+1];
char ciur[2*MAXA+1],m[2*MAXA+1];
int vf[MAXA+1][MAXA+1][MAXA+1],r[2*MAXA+1];
#define MAXBUF (1<<20)
char buf[MAXBUF];
int pos=MAXBUF;
FILE*fi,*fout;
inline char nextch(){
if(pos==MAXBUF){
fread(buf,1,MAXBUF,fi);
pos=0;
}
return buf[pos++];
}
inline int getnr(){
char a=nextch();
while(isdigit(a)==0)
a=nextch();
int nr=0;
while(isdigit(a)==1){
nr=nr*10+a-'0';
a=nextch();
}
return nr;
}
int n;
inline long long calc(int mod){
int i,a,b,c;
long long rez=0;
memset(vf,0,sizeof(vf));
for(i=0;i<=2*MAXA;i++)
r[i]=i%mod;
for(i=0;i<n;i++){
a=r[mod-r[A[i]]];
b=r[mod-r[B[i]]];
c=r[mod-r[C[i]]];
if(a<=MAXA&&b<=MAXA&&c<=MAXA)
rez+=vf[a][b][c];
vf[r[A[i]]][r[B[i]]][r[C[i]]]++;
}
return rez;
}
int main(){
int i,j;
long long sol;
fi=fopen("puteri.in" ,"r");
fout=fopen("puteri.out" ,"w");
n=getnr();
for(i=0;i<n;i++){
A[i]=getnr();
B[i]=getnr();
C[i]=getnr();
}
for(i=2;i*i<=2*MAXA;i++)
if(ciur[i]==0)
for(j=i*i;j<=2*MAXA;j+=i)
ciur[j]=1;
for(i=2;i<=2*MAXA;i++)
m[i]=1;
for(i=2;i<=2*MAXA;i++)
if(ciur[i]==0){
for(j=i;j<=2*MAXA;j+=i)
m[j]*=-1;
for(j=i*i;j<=2*MAXA;j+=i*i)
m[j]=0;
}
sol=0;
for(i=2;i<=2*MAXA;i++)
if(m[i]!=0)
sol=sol-calc(i)*m[i];
fprintf(fout,"%lld" ,sol);
fclose(fi);
fclose(fout);
return 0;
}