Cod sursa(job #3159957)

Utilizator vladdobro07vladdd vladdobro07 Data 22 octombrie 2023 16:07:58
Problema Potrivirea sirurilor Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 1.54 kb
#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;
}