新雜湊函式

2021-10-16 23:11:39 字數 1119 閱讀 8536

位運算與ascii碼的運用

小明設計了乙個雜湊函式,將乙個長度為 kk 的字串轉成個長度為 3232 的字串。這個雜湊函式 \mathcalf 的設計如下:

宣告乙個長度為 3232 的陣列 arr,並將其中元素全部初始化為 0。

取出每一位的 ascii 值,將長度為 kk 的字串中第 ii 位的 ascii 碼加入到 arr[i % 32] 中(1 \leq i \leq k1≤i≤k)。

宣告乙個長度為 3232 的陣列 bits,令 bits[j] 為 arr[31 - j] 與 arr[j] << 1 的值進行了按位異或運算後得到的結果(0\leq j \leq 310≤j≤31)。

計算出 bits[j] % 85 + 34 並將該十進位制數在 ascii 碼中對應的字元輸出到結果字串的第 j + 1j+1 位(0\leq j \leq 310≤j≤31)。

請實現乙個程式,當輸入乙個字串 ss 後,輸出雜湊函式的結果 \mathcal(s)f(s)。

輸入格式

輸入為一行,包括乙個長度為 kk 的字串(32 < k < 50032輸出格式

輸出為一行,為乙個長度為 3232 的字串雜湊結果

習題目的

練習左移運算

練習使用異或運算

練習使用型別轉換處理 int 和 char 型別的關係

樣例輸入

123456789012345678901234567890123

樣例輸出

"p*+,)&'ebst*+,)&'ebst*+,)&'eb&r

#include

#include

#include

char s[

500]

;int arr[32]

;int bits[33]

;int

main()

for(

int j =

0; j <

32; j++

)for

(int j =

0; j <=

31; j++

)printf

("\n");

return0;

}

雜湊函式(雜湊函式,Hash Function)

說明 雜湊的概念屬於查詢,它不以關鍵字的比較為基本操作,採用直接定址技術。在理想情況下,查詢的期望時間為o 1 簡單的說,hash函式就是把任意長的輸入字串變化成固定長的輸出字串的一種函式。輸出字串的長度稱為hash函式的位數。下圖 於維基百科 雜湊函式把訊息或資料壓縮成摘要,使得資料量變小,將資料...

雜湊函式 雜湊函式 演算法

常用字串雜湊函式有bkdrhash,aphash,djbhash,jshash,rshash,sdbmhash,pjwhash,elfhash等等。c 實現 include define m 249997 define m1 1000003 define m2 10000019 大素數 using ...

什麼是雜湊演算法 雜湊函式 雜湊函式?

舉個例子,比如這裡有一萬首歌,給你一首新的歌x,要求你確認這首歌是否在那一萬首歌之內。無疑,將一萬首歌乙個乙個比對非常慢。但如果存在一種方式,能將一萬首歌的每首資料濃縮到乙個數字 稱為雜湊碼 中,於是得到一萬個數字,那麼用同樣的演算法計算新的歌x的編碼,看看歌x的編碼是否在之前那一萬個數字中,就能知...