运用hash表求方程的根的个数~~同上一题。。。。
#include<iostream>
#include<string.h>
#define N 25000007
using namespace std;
char Hash[N];
int main()
{
int a,b,c,d,e;
scanf("%d%d%d%d%d",&a,&b,&c,&d,&e);
memset(Hash,0,sizeof(Hash));
for(int i=-50;i<=50;++i)
{
if(i==0) continue;
for(int j=-50;j<=50;++j)
{ if(j==0) continue;
Hash[12500000+a*i*i*i+b*j*j*j]++;
}
}
int sum=0;
for(int i=-50;i<=50;++i)
{
if(i==0) continue;
for(int j=-50;j<=50;++j)
{
if(j==0) continue;
for(int k=-50;k<=50;++k)
{
if(k==0||c*i*i*i+d*j*j*j+e*k*k*k>12500000||c*i*i*i+d*j*j*j+e*k*k*k<-12500000) continue;
sum+=Hash[12500000-c*i*i*i-d*j*j*j-e*k*k*k];
}
}
}
printf("%d\n",sum);
return 0;
}