Python实现Pat 1078. Hashing (25)

男娘i 2022-06-05 06:56 330阅读 0赞

Pat 1078. Hashing (25)

The task of this problem is simple: insert a sequence of distinct positive integers into a hash table, and output the positions of the input numbers. The hash function is defined to be “H(key) = key % TSize” where TSize is the maximum size of the hash table. Quadratic probing (with positive increments only) is used to solve the collisions.

Note that the table size is better to be prime. If the maximum size given by the user is not prime, you must re-define the table size to be the smallest prime number which is larger than the size given by the user.

Input Specification:

Each input file contains one test case. For each case, the first line contains two positive numbers: MSize (<=104) and N (<=MSize) which are the user-defined table size and the number of input numbers, respectively. Then N distinct positive integers are given in the next line. All the numbers in a line are separated by a space.

Output Specification:

For each test case, print the corresponding positions (index starts from 0) of the input numbers in one line. All the numbers in a line are separated by a space, and there must be no extra space at the end of the line. In case it is impossible to insert the number, print “-” instead.

Sample Input:
4 4
10 6 4 15
Sample Output:
0 1 4 -


提交的代码

  1. def IsPrime(num):
  2. if num==1:
  3. return False
  4. elif num==2:
  5. return True
  6. elif(num%2==0):
  7. return False
  8. temp = num**0.5
  9. for i in range(3,int(temp+1),2):
  10. if num%i==0:
  11. return False
  12. return True
  13. line0= [int(x) for x in raw_input().split(' ')]
  14. line1= [int(x) for x in raw_input().split(' ')]
  15. MSize,N=line0[0],line0[1]
  16. while not IsPrime(MSize):
  17. MSize+=1
  18. bList=[False]*(MSize)
  19. for i in range(N):
  20. temp=line1[i]
  21. for j in range(MSize):
  22. index=(temp+j*j)% MSize
  23. if bList[index]==False:
  24. print index,
  25. bList[index]=True
  26. break
  27. else:
  28. print '-',

评测结果

在PAT上提交后发现有一项运行超时了,但在牛客网是都可以通过的。

PAT

评测结果PAT

牛客网

评测结果-牛客网

发表评论

表情:
评论列表 (有 0 条评论,330人围观)

还没有评论,来说两句吧...

相关阅读

    相关 PAT甲级1078 hashing

    题目大意: 利用除留余数法建hashtable,然后利用平方探查法缓解hash值冲突问题,然后要你输出每个输入的值在hashtable中的下标位置,如果不存在的话输出 -

    相关 PAT A1078

    ![clipboard.png][] 这道题牵扯到了hash散列中的集中查询方式,随后做一个总结,对于素数方面,没有神马难度; include<iostream>