Cod sursa(job #25148)
Utilizator | Data | 4 martie 2007 11:05:21 | |
---|---|---|---|
Problema | Puteri | Scor | 0 |
Compilator | cpp | Status | done |
Runda | preONI 2007, Runda 3, Clasa a 10-a | Marime | 2.5 kb |
#include <stdio.h>
int n,i,j,k,l,a[70][70][70],b[70][70],d[70][70],m,s,p,q,r;
int main()
{
freopen("puteri.in","r",stdin);
freopen("puteri.out","w",stdout);
scanf("%d",&n);
for (i=0;i<=64;++i)
{
b[i][0]=0;
b[i][65]=0;
d[i][65]=0;
}
for (i=1;i<=64;++i) b[0][i]=i;
b[0][65]=64;
b[1][65]=0;
for (i=2;i<=64;++i)
{
for (j=2;j<=i/2;++j)
{
if (i%j==0)
{
b[i][65]++;
b[i][b[i][65]]=j;
}
}
b[i][65]++;
b[i][b[i][65]]=i;
j=i*2;
while (j<=64)
{
d[i][65]++;
d[i][d[i][65]]=j;
j+=i;
}
}
for (i=0;i<=64;++i)
for (j=0;j<=64;++j)
for (k=0;k<=64;++k)
a[i][j][k]=0;
s=0;
for (r=1;r<=n;++r)
{
scanf("%d %d %d",&i,&j,&k);
for (l=0;l<=64;++l)
{
if (l-i>=0)
{
for (p=0;p<=b[l][65];++p)
{
if (b[l][p]-j>=0)
{
for (q=0;q<=b[l][65];++q)
{
if (b[l][q]-k>=0)
{
s+=a[l-i][b[l][p]-j][b[l][q]-k];
}
}
for (q=1;q<=d[l][65];++q)
{
if (d[l][q]-k>=0)
{
s+=a[l-i][b[l][p]-j][d[l][q]-k];
}
}
}
}
for (p=1;p<=d[l][65];++p)
{
if (d[l][p]-j>=0)
{
for (q=0;q<=b[l][65];++q)
{
if (b[l][q]-k>=0)
{
s+=a[l-i][d[l][p]-j][b[l][q]-k];
}
}
for (q=1;q<=d[l][65];++q)
{
if (d[l][q]-k>=0)
{
s+=a[l-i][d[l][p]-j][d[l][q]-k];
}
}
}
}
}
}
a[i][j][k]++;
}
printf("%d\n",s);
return 0;
}