Pagini recente » Cod sursa (job #1397251) | Cod sursa (job #168937) | Cod sursa (job #367165) | Cod sursa (job #774934) | Cod sursa (job #1845927)
#include<iostream>
#include<fstream>
#include<cstring>
#include<cstdlib>
#include<set>
using namespace std;
typedef long long ll;
ifstream in("abc2.in");
ofstream out("abc2.out");
const int Nmax = 10000001;
char s[Nmax],cuv[21];
int n,ans;
set<ll> W[666013];
int main(){
in.getline(s,Nmax);
while(!in.eof()){
in.getline(cuv,21);
if(in.eof()) break;
n=strlen(cuv);
ll val=0;
for(int i=0;i<n;i++) val = val*3 + cuv[i] - 'a';
W[val%666013].insert(val);
}
ll pw=1; for(int i=1;i<n;i++) pw=pw*3;
int sz=strlen(s);
ll val=0;
for(int i=0;i<sz;i++){
if(i>=n){
if(W[val%666013].find(val)!=W[val%666013].end()) ans++;
val -= pw*(s[i-n]-'a');
}
val = val*3 + s[i] - 'a';
}
if(W[val%666013].find(val)!=W[val%666013].end()) ans++;
out<<ans<<'\n';
return 0;
}