Pagini recente » Cod sursa (job #954242) | Cod sursa (job #550544) | Cod sursa (job #3132463) | Cod sursa (job #2474143) | Cod sursa (job #1831896)
#include <iostream>
#include <fstream>
#include <bits/stdc++.h>
#include <string.h>
#define MAXT 10000009
#define MAXC 25
#define MOD 200003
using namespace std;
char sir[MAXT];
vector<long long> v[MOD];
int hashFunc(char cuv[MAXC]){
int a = 3, i, len;
int h = 0;
len = strlen(cuv);
for(i = 1;i < len; ++i){
h = h + (int)((cuv[i] - 'a') * a);
a = a * a;
}
return h;
}
int main(){
char cuv[MAXC],aux[MAXC];
fstream f("abc2.in",ios::in);
fstream g("abc2.out",ios::out);
f.getline(sir,MAXT,'\n');
int i, len, total = 0, l, m, y, x, j, q;
f.getline(cuv,MAXC,'\n');
l = strlen(cuv);
len = strlen(sir);
for(i = 0;i <= len - l; ++i){
strcpy(aux,"");
strncpy(aux,sir + i,l);
aux[l] = '\0';
x = hashFunc(aux);
v[x % MOD].push_back(x);
}
/*
x = hashFunc(cuv);
m = v[x % MOD].size();
y = x % MOD;
for(i = 0;i < m; ++i)
if(v[y][i] == x){
++total;
break;
}
while(f.getline(cuv,MAXC,'\n')){
x = hashFunc(cuv);
m = v[x % MOD].size();
y = x % MOD;
for(i = 0;i < m; ++i)
if(v[y][i] == x){
++total;
v[y][i] = -1;
break;
}
}
*/
g << total;
}