计算可能的数目
a3*x3^3+a4*x4^3+a5*x5^5=-(a1*x1^3+a2*x2^3);
列举右边的 结果存到数组 z[i] 和为i的右边等式的数目
如果和小于0 +25000000
反正能存下就行了
然后列举一下左边的
1 #include<stdio.h> 2 #include<algorithm> 3 #include<string.h> 4 #include<math.h> 5 #include<vector> 6 7 using namespace std; 8 9 short z[25000010]; 10 int a[5]; 11 12 int main() 13 { 14 for(int i=0;i<5;i++) 15 scanf("%d",&a[i]); 16 for(int i=-50;i<=50;i++) 17 { 18 if(!i) 19 continue; 20 21 for(int j=-50;j<=50;j++) 22 { 23 if(!j) 24 continue; 25 int sum=-(a[0]*i*i*i+a[1]*j*j*j); 26 if(sum<0) 27 sum+=25000000; 28 z[sum]++; 29 } 30 } 31 int cnt=0; 32 for(int i=-50;i<=50;i++) 33 { 34 if(!i) 35 continue; 36 37 for(int j=-50;j<=50;j++) 38 { 39 if(!j) 40 continue; 41 42 for(int k=-50;k<=50;k++) 43 { 44 if(!k) 45 continue; 46 int sum=a[2]*i*i*i+a[3]*j*j*j+a[4]*k*k*k; 47 if(sum<0) 48 sum+=25000000; 49 cnt+=z[sum]; 50 } 51 } 52 } 53 printf("%d ",cnt); 54 return 0; 55 }