Pagini recente » Cod sursa (job #2793649) | Cod sursa (job #2335547) | Cod sursa (job #1329206) | Cod sursa (job #1437659) | Cod sursa (job #3210732)
#include <bits/stdc++.h>
#define P 1234577
#define Q 7770131
using namespace std;
ifstream fin("abc2.in");
ofstream fout("abc2.out");
string a, b;
int n, m, k;
unordered_map<long long, bool>M;
int main()
{
ios_base::sync_with_stdio(0);
fin.tie(0);
fout.tie(0);
int i, cnt = 0;
long long x1, x2, p, p1;
p = p1 = 1;
fin >> a;
fin.get();
while(fin >> b)
{
x1 = x2 = 0;
for(i = 0; i < b.size(); i++)
{
x1 = (x1 * 3 + (b[i] - 'a')) % P;
x2 = (x2 * 3 + (b[i] - 'a')) % Q;
}
M[x1] = 1;
M[x2] = 1;
fin.get();
}
m = b.size();
for(i = 1; i < m; i++)
{
p = (p * 3) % P;
p1 = (p1 * 3) % Q;
}
x1 = 0;
x2 = 0;
for(i = 0; i < m; i++)
{
x1 = (x1 * 3 + (a[i] - 'a')) % P;
x2 = (x2 * 3 + (a[i] - 'a')) % Q;
}
if(M[x1] == 1 and M[x2] == 1)cnt++;
for(i = m; i < a.size(); i++)
{
x1 = (x1 - (a[i - m] - 'a') * p % P + P) % P;
x1 = (x1 * 3 + (a[i] - 'a')) % P;
x2 = (x2 - (a[i - m] - 'a') * p1 % Q + Q) % Q;
x2 = (x2 * 3 + (a[i] - 'a')) % Q;
if(M[x1] == 1 and M[x2] == 1)cnt++;
}
fout << cnt;
return 0;
}