Pagini recente » Cod sursa (job #490032) | Cod sursa (job #1126927) | Cod sursa (job #1852983) | Cod sursa (job #2103898) | Cod sursa (job #2297628)
#include <bits/stdc++.h>
using namespace std;
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);
long long val = 0;
for (int i = 0; i < l; ++i)
val = val * 3 + c[i] - 'a';
G[val % MOD].push_back(val);
}
int n = strlen(s), ans = 0;
long long val = 0, p3 = 1;
for (int j = 0; j < l; ++j)
val = val * 3 + s[j] - 'a', p3 *= 3;
p3 /= 3;
for (int i = 0; i + l - 1 < n; ++i) {
ans += cauta(val);
val = val - (s[i] - 'a') * p3;
val *= 3;
val += s[i + l] - 'a';
}
printf("%d\n", ans);
return 0;
}