#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; }
|