Pagini recente » Cod sursa (job #1436862) | Cod sursa (job #2124588) | Cod sursa (job #2944661) | Cod sursa (job #1868187) | Cod sursa (job #99276)
Cod sursa(job #99276)
#include<stdio.h>
#include<string.h>
char M[10000010],a[2000000],N[50010],pi[50010];
void PI()
{int k=0,i,n=strlen(N);
pi[0]=pi[1]=0;
for(i=1;i<n;i++)
{while(k>0&&N[k]!=N[i])
k=pi[k];
if(N[k]==N[i]) k++;
pi[i+1]=k;}
}
int KMP()
{int n=strlen(N),m=strlen(M),i,k=0,nr=0;
PI();
for(i=0;i<m;i++)
{while(k>0&&N[k]!=M[i])
k=pi[k];
if(N[k]==M[i]) k++;
if(k==n) nr++; }
return nr;
}
long nr;
int main()
{freopen("abc2.in","r",stdin);
freopen("abc2.out","w",stdout);
scanf(" %s ",M);
while(!feof(stdin))
{scanf(" %s ",N);
// if(!KMP())
// {strcat(a,N);
// a[strlen(a)]=' ';
nr=nr+KMP();//}
}
printf("%lld",nr);
fclose(stdout);
return 0;}