Pagini recente » Cod sursa (job #71785) | Rating Olariu Rares-Stefan (RaresO174) | Cod sursa (job #904914) | Cod sursa (job #2285141) | Cod sursa (job #3225914)
using namespace std;
#include<iostream>
#include<fstream>
#include<cstring>
#include<unordered_map>
ifstream fin("abc2.in");
ofstream fout("abc2.out");
#define MOD1 1000000009
#define MOD2 1000000021
#define NMAX 10000001
string A, B;
unordered_map<long long, bool> prez;
int la, lb;
long long nr;
long long pow3 = 1;
long long ans;
int main() {
fin >> A;
la = A.size();
while (fin >> B) {
nr = 0;
lb = B.size();
for (int i = 0; i<lb; i++) {
nr = nr*3 + B[i] - 'a';
}
prez[nr] = 1;
}
nr = 0;
for (int i = 0; i<lb; i++) {
nr = nr*3 + A[i] - 'a';
pow3 = pow3 * 3;
}
pow3 /= 3;
if (prez.find(nr) != prez.end()) ans++;
for (int i = 1; i<la-lb; i++) {
nr = nr % pow3;
nr = nr * 3 + A[i+lb-1] - 'a';
if (prez.find(nr) != prez.end()) ans++;
}
fout << ans;
return 0;
}