题意:
对于公式: a*x1^3+b*x2^3+c*x3^3+d*x4^3+e*x5^3=0其中(a,b,c,d,e,x1,x2,x3,x4,x5)都在区间【-50,50】中
给出a,b,c,d,e求满足等式的情况
分析:
等式===》-(a*x1^3+b*x2^3)=c*x3^3+d*x4^3+e*x5^3
又因为每个值范围在【-50,50】之间那么对于没一个数范围为【-12500000,12500000】我们可以hash处理
ACcode:
#include <iostream>
#include <algorithm>
#include <cstdio>
#include <cstring>
#include <string>
#include <vector>
using namespace std;
#define maxn 25000005
short has[maxn];
int a,b,c,d,e,ans;
int main(){
while(cin>>a>>b>>c>>d>>e){
ans=0;
memset(has,0,sizeof(has));
for(int x1=-50;x1<=50;++x1)
if(x1){
for(int x2=-50;x2<=50;++x2)
if(x2){
int t=-1*(a*x1*x1*x1+b*x2*x2*x2);
if(t<0)t+=25000000;
has[t]++;
}
}
for(int x3=-50;x3<=50;++x3)
if(x3){
for(int x4=-50;x4<=50;++x4)
if(x4){
for(int x5=-50;x5<=50;++x5)
if(x5){
int t=c*x3*x3*x3+d*x4*x4*x4+e*x5*x5*x5;
if(t<0)t+=25000000;
if(has[t])ans+=has[t];
}
}
}
cout<<ans<<'\12';
}
return 0;
}