📜  门| GATE-CS-2015(套装2)|第 65 题

📅  最后修改于: 2021-09-25 07:11:56             🧑  作者: Mango

对于从 0 到 2020 的 i,以下哪个整数散列函数将最均匀地将键分布在编号为 0 到 9 的 10 个桶上?
(A) h(i) = i 2 mod 10
(B) h(i) = i 3 mod 10
(C) h(i) = (11 ∗ i 2 ) mod 10
(D) h(i) = (12 * i) mod 10答案:(乙)
说明:由于使用了 mod 10,最后一位数字很重要。

如果你对从 0 到 9 的所有数字进行立方运算,你会得到以下结果

Number    Cube    Last Digit in Cube
  0        0              0 
  1        1              1 
  2        8              8 
  3        27             7 
  4        64             4 
  5        125            5 
  6        216            6
  7        343            3
  8        512            2
  9        729            9  

因此,从 0 到 2020 的所有数字均等分为 10 个桶。如果我们为正方形制作一张桌子,我们就不会得到均等的分配。在下表中。 1、4、6 和 9 是重复的,所以这些桶会有更多的条目,而桶 2、3、7 和 8 将是空的。

Number   Square     Last Digit in Cube
  0        0              0 
  1        1              1 
  2        4              4 
  3        9              9 
  4        16             6
  5        25             5 
  6        36             6
  7        49             9
  8        64             4
  9        81             1  

替代方法——
使用循环幂的概念:

(a) (0,1,4,9,6,5,6,9,4,1,0) 重复
(b) (0,1,8,7,4,5,6,3,2,9) 重复
(c) (0,1,4,9,6,5,6,9,4,1,0) 重复
(d) (0,2,4,6,8) 重复

因此,只有 h(i) =i 3 mod 10 涵盖了从 0 到 9 的所有数字。
选项(B)是正确的。

这个问题的测验