位運算與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的編碼是否在之前那一萬個數字中,就能知...