Pagini recente » Cod sursa (job #2650470) | Cod sursa (job #2635918) | Cod sursa (job #2291952) | Cod sursa (job #2224754) | Cod sursa (job #2303257)
#include <bits/stdc++.h>
using namespace std;
char s[10000005],s2[25];
int len,len2;
#define MOD 9973
vector<unsigned int> H[MOD];
bool find(unsigned int n){
int h = n % MOD;
for(auto it : H[h])
if(it == n)
return 1;
return 0;
}
void insert(unsigned int n){
int h = n % MOD;
for(auto it : H[h])
if(it == n)
return ;
H[h].push_back(n);
}
int main(){
freopen("abc2.in","r",stdin);
freopen("abc2.out","w",stdout);
scanf("%s",s);
len=strlen(s);
int ans=0;
unsigned int P=1;
while(scanf("%s",s2)!=EOF){
len2=strlen(s2);
unsigned int cod=0;
for(int i=0;i<len2;++i)
cod=cod*3+(s2[i]-'a');
insert(cod);
}
for(int i=1;i<len2;++i)
P*=3;
unsigned int cod=0;
for(int i=0;i<len2;++i)
cod=cod*3+(s[i]-'a');
for(int i=0;i<len-len2+1;++i){
ans+=find(cod);
cod=(cod-P*(s[i]-'a'))*3+(s[i+len2]-'a');
}
printf("%d\n",ans);
return 0;
}