Pagini recente » Cod sursa (job #867976) | Cod sursa (job #985170) | Cod sursa (job #675831) | Cod sursa (job #63745) | Cod sursa (job #3159957)
#include <iostream>
#include <vector>
using namespace std;
const int HashBase1=79,HashBase2=797,HashMod1=79797,HashMod2=797979;
int sz,magic1,magic2;
int lgPut(int a,int n,int table) {
int rez=1,mod;
if(table==1)
mod=HashMod1;
else
mod=HashMod2;
while(n) {
if(n%2==1)
rez=(rez*a);
a=(a*a);
n/=2;
}
return rez;
}
int calcHash(const string& s,int table) {
int rez=0;
if(table==1) {
for(int i=0; i<s.size(); i++)
rez=(rez*HashBase1+s[i]-'a');
if(rez<0)
rez+=HashMod1;
} else {
for(int i=0; i<s.size(); i++)
rez=(rez*HashBase2+s[i]-'a');
if(rez<0)
rez+=HashMod2;
}
return rez;
}
void removeFromHash(char ch,int &hashnr,int table) {
if(table==1)
hashnr-=(ch-'a')*magic1;
else
hashnr-=(ch-'a')*magic2;
//return hashnr;
}
void addToHash(char ch,int &hashnr,int table) {
if(table==1)
hashnr=(hashnr*HashBase1+ch-'a');
else
hashnr=(hashnr*HashBase2+ch-'a');
//return hashnr;
}
int main() {
string ptr,str;
//cin>>ptr>>str;
sz=3;
magic1=lgPut(HashBase1,sz-1,1);
magic2=lgPut(HashBase2,sz-1,2);
int b=calcHash("BCA",1),c=calcHash("BCA",2);
cout<<b<<" "<<c<<"\n";
removeFromHash('B',b,1);
removeFromHash('B',c,2);
cout<<calcHash("CA",1)<<" "<<calcHash("CA",2)<<"\n"<<b<<" "<<c;
for(int i=0; i<ptr.size()-str.size(); i++) {
}
return 0;
}