Pagini recente » Cod sursa (job #501659) | Cod sursa (job #2297894) | Cod sursa (job #1600025) | Cod sursa (job #898908) | Cod sursa (job #27379)
Cod sursa(job #27379)
#include<stdio.h>
#include<math.h>
#include<fstream.h>
#define nm 13
#define nmax 105
#define fin "puteri.in"
#define fout "puteri.out"
unsigned int nr[nm][nm][nm],a[nmax],b[nmax],c[nmax];
int long n;
long long sol;
void rezolva()
{int long d,i1,k,p;
int ad,bd,cd,i;
for(i=2;i<=nm-2;i++)
{i1=i;
for(d=2,k=0,p=1;d<=sqrt(i1);d++)
if(!(i1%d))
{i1/=d;
if(!(i1%d))
{p=0;
break;
}
k++;
}
if(i1>1)
k++;
if(p)
{//aflu restul impartirii la i
//memset(nr,0,sizeof(nr));
if(k%2)
for(d=1;d<=n;d++)
{sol+=nr[(i-a[d]%i)%i][(i-b[d]%i)%i][(i-c[d]%i)%i];
nr[a[d]%i][b[d]%i][c[d]%i]++;
}
else
for(d=1;d<=n;d++)
{sol-=nr[(i-a[d]%i)%i][(i-b[d]%i)%i][(i-c[d]%i)%i];
nr[a[d]%i][b[d]%i][c[d]%i]++;
}
for(d=1;d<=n;d++)
nr[a[d]%i][b[d]%i][c[d]%i]=0;
}
}
}
int main()
{int long i,j,k;
char d[10];
freopen(fin,"r",stdin);
scanf("%ld",&n);
for(i=1;i<=n;i++)
{//scanf("%u%u%u",&a[i],&b[i],&c[i]);
fgets(d,11,stdin);
j=0;
while(d[j]<='9'&&d[j]>='0')
a[i]=a[i]*10+d[j++]-'0';
j++;
while(d[j]<='9'&&d[j]>='0')
b[i]=b[i]*10+d[j++]-'0';
j++;
while(d[j]<='9'&&d[j]>='0')
c[i]=c[i]*10+d[j++]-'0';
}
rezolva();
freopen(fout,"w",stdout);
printf("%lld",sol);
fclose(stdout);
return 0;
}