Pagini recente » Cod sursa (job #452193) | Cod sursa (job #2207975) | Cod sursa (job #599836) | Cod sursa (job #2541309) | Cod sursa (job #101623)
Cod sursa(job #101623)
#include <stdio.h>
#define S ((1<<23)-1)
int V[S+10], Nr;
char ss[10000002], ss2[50002];
int main()
{
int i, j, hash, l, n;
freopen("abc2.in", "r", stdin);
gets(ss);
n = strlen(ss);
scanf(" ");
gets(ss2);
l = strlen(ss2);
n -= l;
for (i = 0; i < n; i++)
{
hash = 65599;
for (j = 0; j < l; j++)
hash = ((int)ss[i+j]+(hash<<6)+(hash<<16)-hash)&S;
V[hash]++;
}
hash = 65599;
for (j = 0; j < l; j++)
hash = (ss2[j]+(hash<<6)+(hash<<16)-hash)&S;
Nr += (V[hash]>0);
V[hash] = 0;
for (i = 0; i < 50000; i++)
{
scanf(" ");
gets(ss2);
hash = 65599;
for (j = 0; j < l; j++)
hash = (ss2[j]+(hash<<6)+(hash<<16)-hash)&S;
Nr += (V[hash]>0);
V[hash] = 0;
}
freopen("abc2.out", "w", stdout);
printf("%d\n", Nr);
return 0;
}