哈希表的应用

 

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. 

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情况下可能重复的情况

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值