Pagini recente » Cod sursa (job #1926577) | Cod sursa (job #1564857) | Cod sursa (job #1917090) | Cod sursa (job #1535682) | Cod sursa (job #2297621)
#include <bits/stdc++.h>
using namespace std;
const int B = 31;
const int MOD = 29317;
unordered_map<unsigned int, bool>x;
char s[10000005], c[25];
vector<int>G[MOD + 5];
bool cauta(int val) {
int v1 = val % MOD;
for (auto it:G[v1])
if (it == val)
return 1;
return 0;
}
int main() {
freopen("abc2.in", "r", stdin);
freopen("abc2.out", "w", stdout);
scanf("%s", s);
int l = -1;
while(scanf("%s", c) != EOF) {
if (l == -1)
l = strlen(c);
unsigned int val = 0;
for (int i = 0; i < l; ++i)
val = val * B + c[i] - 'a';
G[val % MOD].push_back(val);
}
int n = strlen(s), ans = 0;
for (int i = 0; i + l - 1 < n; ++i) {
unsigned int val = 0;
for (int j = 0; j < l; ++j)
val = val * B + s[i + j] - 'a';
ans += cauta(val);
}
printf("%d\n", ans);
return 0;
}