Pagini recente » Cod sursa (job #3041849) | Cod sursa (job #124874) | Cod sursa (job #2399042) | Cod sursa (job #1582645) | Cod sursa (job #106790)
Cod sursa(job #106790)
using namespace std;
#include <cstdio>
#include <cassert>
#include <string>
#include <iostream>
#include <set>
#define FIN "abc2.in"
#define FOUT "abc2.out"
#define NMAX 10000000
set <unsigned long> H;
int N;
char s[NMAX], sir[21], l;
void read ()
{
unsigned long sum=0, trei;
int i;
gets (s);
N = strlen (s);
scanf ("\n");
gets (sir);
l = strlen (sir);
for (i = 0, trei = 1; i < l; ++ i, trei *= 3)
sum += trei * (sir[i] - 'a');
H.insert (sum);
while (gets (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;
}