哈希 poj 1480

时间:2023-03-09 05:44:14
哈希 poj 1480

计算可能的数目

a3*x3^3+a4*x4^3+a5*x5^5=-(a1*x1^3+a2*x2^3);

列举右边的  结果存到数组  z[i] 和为i的右边等式的数目

如果和小于0  +25000000

反正能存下就行了

然后列举一下左边的

 #include<stdio.h>
#include<algorithm>
#include<string.h>
#include<math.h>
#include<vector> using namespace std; short z[];
int a[]; int main()
{
for(int i=;i<;i++)
scanf("%d",&a[i]);
for(int i=-;i<=;i++)
{
if(!i)
continue; for(int j=-;j<=;j++)
{
if(!j)
continue;
int sum=-(a[]*i*i*i+a[]*j*j*j);
if(sum<)
sum+=;
z[sum]++;
}
}
int cnt=;
for(int i=-;i<=;i++)
{
if(!i)
continue; for(int j=-;j<=;j++)
{
if(!j)
continue; for(int k=-;k<=;k++)
{
if(!k)
continue;
int sum=a[]*i*i*i+a[]*j*j*j+a[]*k*k*k;
if(sum<)
sum+=;
cnt+=z[sum];
}
}
}
printf("%d\n",cnt);
return ;
}