Eqs(hash初步)

Eqs

Description:
Consider equations having the following form:
a1x13+ a2x23+ a3x33+ a4x43+ a5x53=0
The coefficients are given integers from the interval [-50,50].
It is consider a solution a system (x1, x2, x3, x4, x5) that verifies the equation, xi∈[-50,50], xi != 0, any i∈{1,2,3,4,5}.
Determine how many solutions satisfy the given equation.
Input:
The only line of input contains the 5 coefficients a1, a2, a3, a4, a5, separated by blanks.
Output:
The output will contain on the first line the number of the solutions for the given equation.
Sample Input:
37 29 41 43 47
Sample Output:
654
题目大意:
给出一个5元3次方程,输入其5个系数,求它的解的个数
其中系数 ai∈[-50,50] 自变量xi∈[-50,0)∪(0,50]

#include<iostream>
using namespace std;
const int maxn=25000000;
int a1,a2,a3,a4,a5;
short hash[maxn+1];
int main()
{
    cin>>a1>>a2>>a3>>a4>>a5;
    for(int x1=-50;x1<=50;x1++)
    {
        if(!x1) continue;
        for(int x2=-50;x2<=50;x2++)
        {
            if(!x2) continue;
            int num=a1*x1*x1*x1+a2*x2*x2*x2;
            if(num<0)
            num+=maxn;
            hash[num]++;
        }
    }
    int ans=0;
    for(int x3=-50;x3<=50;x3++)
    {
        if(!x3) continue;
        for(int x4=-50;x4<=50;x4++)
        {
            if(!x4) continue;
            for(int x5=-50;x5<=50;x5++)
            {
                if(!x5) continue;
                int num=a3*x3*x3*x3+a4*x4*x4*x4+a5*x5*x5*x5;
                if(num<0)
                num+=maxn;
                if(hash[num])
                ans+=hash[num];
            }
        }
    }
    cout<<ans;
    return 0;
}
原文地址:https://www.cnblogs.com/cax1165/p/6070986.html