Pagini recente » Cod sursa (job #2180664) | Cod sursa (job #1691819) | Cod sursa (job #1980656) | Cod sursa (job #1010741) | Cod sursa (job #1060308)
#include<stdio.h>
#include<string.h>
#include<vector>
using namespace std;
#define MOD 99991
char a[10000010],aux[25];
vector<int> v[MOD+10];
inline bool find(int h)
{
int i,list=h%MOD;
for(i=0;i<v[list].size();++i)
if(v[list][i]==h)
return 1;
return 0;
}
int main()
{
freopen("abc2.in","r",stdin);
freopen("abc2.out","w",stdout);
int n,l,i,sol=0,h,p;
scanf("%s\n",&a);
n=strlen(a);
scanf("%s\n",&aux);
l=strlen(aux);
while(1)
{
h=0;
for(i=0;i<l;++i)
h=h*3+aux[i]-'a';
if(!find(h))
v[h%MOD].push_back(h);
if(scanf("%s\n",&aux)==EOF)
break;
}
p=1;h=0;
for(i=1;i<l;++i)
p*=3;
for(i=0;i<l;++i)
h=h*3+a[i]-'a';
sol+=find(h);
for(;i<n;++i)
{
h-=p*(a[i-l]-'a');
h=h*3+a[i]-'a';
sol+=find(h);
}
printf("%d\n",sol);
return 0;
}