2016-04-26 55 views
-1

我讀我的notes從算法類(幾年前)的結果,我發現這一點:無法理解這個散列函數

enter image description here

它說:假設

h(k)= k mod m,其中m = 4且k = 100,則h(k)= 4

這是真的嗎?我會認爲4 * 25 = 100,因此h(k)= 0.我錯過了什麼?

我認爲這是一個錯字,但我只是檢查了筆記的最新版本,它仍然是一樣的!

+0

LOL我剛剛在學校有限的數學做,它是粗糙的笑。基本上這是發生了什麼:h(k)= k mod m :: h(k)= 100 mod 4 = 0(根據谷歌計算器)。似乎這些筆記是錯誤的。 – rackemup420

+0

看起來像筆記是錯誤的,雖然'4 = 0 mod 4'。那是希臘文嗎?恥辱它不是在俄羅斯,我相信會有一個「在蘇俄」的笑話在那裏的某個地方......也許不是一種恥辱,那麼... – pseudoDust

+0

@ rackemup420是的,我同意!是的,這是希臘的僞粉塵,對不起; p – gsamaras

回答

1

模運算符永遠不會返回該結果,因爲它代表整數除法後的餘數

所以此規則適用於正整數x和y:

x mod y = z ⇒ z < y 

寫上面的模運算的另一個方法是:

⎣x/y⎦.y + z = x 

如果不知爲何,你會做到這一點z == y那麼很顯然你沒有⎣x/y⎦部分出現問題。