Pagini recente » Cod sursa (job #2166987) | Cod sursa (job #1771229) | Cod sursa (job #802085) | Cod sursa (job #1294219) | Cod sursa (job #106779)
Cod sursa(job #106779)
using namespace std;
#include <cstdio>
#include <cassert>
#include <string>
#include <iostream>
#include <set>
#define FIN "abc2.in"
#define FOUT "abc2.out"
#define NMAX 10000000
#define pb push_back
set <unsigned long> H;
int N;
char s[NMAX], sir[21], l;
void read ()
{
unsigned long sum, trei;
int i;
gets (s);
N = strlen (s);
scanf ("\n");
while (cin >> sir)
{
l = strlen (sir);
sum = 0;
for (i = 0, trei = 1; i < l; ++ i, trei *= 3)
sum += trei * (sir[i] - 'a');
H.insert (sum);
}
}
void solve ()
{
int i, cnt = 0;
unsigned long sum = 0, trei = 1;
for (i = 0; i < l - 1; ++ i, trei *= 3)
sum += trei * (s[i] - 'a');
for (; i < N; ++ i)
{
sum += trei * (s[i] - 'a');
if (H.find(sum) != H.end())
++ cnt;
sum -= s[i - l + 1] - 'a';
sum /= 3;
//cout<< sum<<"\n";
}
printf ("%d\n", cnt);
}
int
main ()
{
freopen (FIN, "rt", stdin);
freopen (FOUT, "wt", stdout);
read ();
solve ();
return 0;
}