Pagini recente » Cod sursa (job #2147690) | Cod sursa (job #207439) | Cod sursa (job #1228872) | Cod sursa (job #1375791) | Cod sursa (job #3225918)
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;
}
for (int i = 1; i<lb; i++) pow3 *= 3;
nr = 0;
for (int i = 0; i<lb; i++) {
nr = nr*3 + A[i] - 'a';
}
if (prez.find(nr) != prez.end()) ans++;
for (int i = 1; i<la-lb; i++) {
nr = nr - pow3 * (A[i-1]-'a');
nr = nr * 3 + A[i+lb-1] - 'a';
if (prez.find(nr) != prez.end()) ans++;
}
fout << ans;
return 0;
}