/* (a1*x1^3+a2*x2^3+a3*x3^3) =-(a4*x4^3+a5*x5^3) 最大值是 2.325*10^7 右边最大值1.25*10^7 当结果是负数时,数组下标不能为负数---故加上2.5*10^7 */ #include<iostream> #include<cstring> using namespace std; char Hash[25000000];//int ==Memory Limit const int MOD=25000000; int main() { int sum,a1,a2,a3,a4,a5,num; int x1,x2,x3,x4,x5; while(scanf("%d %d %d %d %d",&a1,&a2,&a3,&a4,&a5)!=EOF) { memset(Hash,'0',sizeof(Hash));//当字符串时---memset(Hash,0,sizeof(Hash));与其不一样 num=0; for(x1=-50;x1<=50;x1++) { if(x1==0) continue; for(x2=-50;x2<=50;x2++) { if(x2==0) continue; for(x3=-50;x3<=50;x3++) { if(x3==0) continue; sum=(a1*x1*x1*x1+a2*x2*x2*x2+a3*x3*x3*x3); if(sum<0) sum=sum+MOD;//此处 取绝对值是不对的 Hash[sum]++; } } } for(x4=-50;x4<=50;x4++) { if(x4==0) continue; for(x5=-50;x5<=50;x5++) { if(x5==0) continue; sum=-1*(a4*x4*x4*x4+a5*x5*x5*x5); if(sum<0) sum=sum+MOD; //此处 会出现等式成立 但x不同的情况 所以存在多种情况 num+=Hash[sum]-'0'; } } cout<<num<<endl; } return 0; }