Pagini recente » Cod sursa (job #1066086) | Cod sursa (job #2089998) | Cod sursa (job #1584130) | Cod sursa (job #2858797) | Cod sursa (job #98200)
Cod sursa(job #98200)
#include <stdio.h>
#include <string.h>
#define Lmax 10000001
#define Lcmax 21
#define Dim 1048573
char s[Lmax],c[Lcmax];
int hash[Dim];
int L,Lc,tot,i,Nrmax;
long long nr;
int main()
{
freopen("abc2.in","r",stdin);
scanf("%s\n",&s);
L=strlen(s);
scanf("%s\n",&c);
Lc=strlen(c);
Nrmax=(1<<Lc);
Nrmax=Nrmax*Nrmax-1;
for (i=0;i<Lc;++i)
nr=(nr<<2)+s[i]-'a';
++hash[nr % Dim];
for (i=1;i<=L-Lc;++i)
{
nr=((nr<<2)&Nrmax)+s[i+Lc-1]-'a';
++hash[nr % Dim];
}
for (i=0,nr=0;i<Lc;++i)
nr=(nr<<2)+c[i]-'a';
tot+=hash[nr % Dim];
hash[nr % Dim]=0;
while (! feof(stdin))
{
scanf("%s\n",c);
for (i=0,nr=0;i<Lc;++i)
nr=(nr<<2)+c[i]-'a';
tot+=hash[nr % Dim];
hash[nr % Dim]=0;
}
freopen("abc2.out","w",stdout);
printf("%d",tot);
fclose(stdin);
fclose(stdout);
return 0;
}