#include<iostream>
#include<algorithm>
using namespace std;
int d[6][105];
int H[10005];
const int MAX=100;
int len;
int cmp(const void * a,const void * b)
{
return *(int *)a-*(int *)b;
}
int search_binary(int key,int s,int t)
{
int m;
while(s<=t)
{
m=(s+t)/2;
if(H[m]==key)
{
int c;
int d;
c=d=0;
int tt=m-1;
while(tt>=s && H[tt--]==key)
c++;
tt=m+1;
while(tt<=t && H[tt++]==key)
d++;
return c+d+1;
}
else
{
if(H[m]>key)
t=m-1;
else
s=m+1;
}
}
return -1;
}
int main()
{
int i,j,k,l,m;
int a[6];
int temp;
scanf("%d%d%d%d%d",&a[1],&a[2],&a[3],&a[4],&a[5]);
for(i=0;i<50;++i)
{
temp=(i-50)*(i-50)*(i-50);
for(j=1;j<=5;j++)
d[j][i]=a[j]*temp;
}
for(i=51;i<=MAX;++i)
{
temp=(i-50)*(i-50)*(i-50);
for(j=1;j<=5;j++)
d[j][i-1]=a[j]*temp;
}
//int L1,L2,L3,L4;
len=0;
for(i=0;i<MAX;++i)
{
for(j=0;j<MAX;++j)
{
H[len++]=(0-(d[1][i]+d[2][j]));
}
}
sort(H,H+len);
//qsort(H,len,sizeof(H[0]),cmp);//排序
int sum=0;
for(k=0;k<MAX;++k)
{
for(l=0;l<MAX;++l)
{
for(m=0;m<MAX;++m)
{
temp=d[3][k]+d[4][l]+d[5][m];
int times=search_binary(temp,0,len-1);
if(times!=-1)
sum+=times;
}
}
}
printf("%d\n",sum);
return 0;
}
|