Pagini recente » Cod sursa (job #3148382) | Cod sursa (job #2419888) | Cod sursa (job #270763) | Cod sursa (job #1168315) | Cod sursa (job #106816)
Cod sursa(job #106816)
using namespace std;
#include <cstdio>
#include <cassert>
#include <string>
#include <iostream>
#include <set>
#define FIN "abc2.in"
#define FOUT "abc2.out"
#define NMAX 10000000
int N;
char s[NMAX], sir[21], l;
int H[100000];
void read ()
{
long 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[(sum * 12313) % 99997] = 1;
while (gets (sir))
{
sum = 0;
for (i = 0, trei = 1; i < l; ++ i, trei *= 3)
sum += trei * (sir[i] - 'a');
H[(sum * 12313) % 99997] = 1;
}
}
void solve ()
{
int i, cnt = 0;
long 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[(sum*12313) % 99997])
++ 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;
}