Eqs
Time Limit: 5000MS | Memory Limit: 65536K | |
Total Submissions: 5678 | Accepted: 2742 |
Description
Consider equations having the following form:
a1x1 3+ a2x2 3+ a3x3 3+ a4x4 3+ a5x5 3=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.
a1x1 3+ a2x2 3+ a3x3 3+ a4x4 3+ a5x5 3=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
问题分析:
此题可以用最原始的方法,四个for循环来做,不过分析一下就知道o(n)=100^5,不满足题目条件。
运用哈希表来做:直接定值法来确定哈希地址H(key)=a*key+b
将等式的前两项移至等号右边,计算其值,带入哈希函数算出地址,记录。
再算等号左边式子的值带入哈希函数算出地址,该地址的哈希表值非零,则说明等式左右相等。
代码:
遇到的问题及解决:
1.申请的hashTable数组如若放在main函数内部,会发生栈溢出,所以只能设为全局变量,放入堆中
2.如若等号相等应该count++但是不能这样判断:
if(hashTable[pos]>0) count++;
漏掉了-(a[0]*i*i*i+a[1]*j*j*j)在不同i,j情况下可能重复的情况