Eqs(hash初步)

来源:互联网 发布:c语言的main函数是什么 编辑:程序博客网 时间:2024/06/06 03:39

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;}
1 0