作者winterboy209 (鼕鼕)
看板C_and_CPP
標題[問題] 一個小題目
時間Sun Jun 21 19:10:46 2009
#include<iostream>
#include<fstream>
using namespace std ;
void main(){
ifstream data("b.txt") ;
char num[100] ;
int spilt ;
int total = 0 ;
int sum = 0 ;
char temp[100] ;
data.getline(num,100,'\n') ;
data >> spilt ;
cout << num << endl << spilt << endl ;
# for(int i=0;i<strlen(num);){
# for(int j=0;j<spilt;j++){
# temp[j] = num[i++] ;
# }
# total += atoi(temp) ;
}
cout << "Ans=" << total << endl ;
}
雜湊(hashing)是用來計算一個鍵值(key value)對應之索引(index)的方法,而「折疊法」
4
是雜湊函數的方法之一,假設有一個鍵值為5120969190600791,而折疊的長度為3,
折疊的計算過程如下,首先鍵值先依照折疊長度加以切割,由於鍵值有16 個數字,每3
個數字進行切割的話,可以切出6 段,如下所示:
512 096 919 060 079 1
接著這些數值進行加總就可以得到所需要的索引1667,如下所示:
512+096+919+060+079+1=1667
所以請撰寫一個程式從b.txt 中讀入兩行資料,第一行是鍵值的字串,第二行是折疊的
長度,接著輸出索引的結果。
範例輸入:
5120969190600791
3
範例輸出:
5120969190600791
3
Ans=1667
##我想問的是#那5行在做什麼
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 218.162.118.189
→ winterboy209:第一行;後面好像少了什麼 06/21 19:12
推 LPH66:那裡沒有東西 06/21 19:45
→ MOONRAKER:那可以換成一條i=0和一個等效的while 06/22 00:06