Pagini recente » Cod sursa (job #1001609) | Cod sursa (job #3280231) | Cod sursa (job #1281339) | Cod sursa (job #2503459) | Cod sursa (job #1061121)
#include<cstdio>
#include<iostream>
#include<vector>
#include<string>
using namespace std;
const int MOD=66013;
typedef vector<unsigned int> hesh;
typedef hesh::iterator hit;
hesh ht[MOD+1];
string text,cuv;
unsigned int lung, clung;
hit find(int x)
{
for(hit i=ht[x%MOD].begin() ; i!=ht[x%MOD].end() ; i++)
if(x==*i)
return i;
return ht[x%MOD].end();
}
int main()
{
freopen("abc2.in","r",stdin);
freopen("abc2.out","w",stdout);
cin>>text;
lung=text.length();
cin>>cuv;
clung=cuv.length();
unsigned int nr,afis=0,p,l,j,i;
hit fnd;
while(!cin.eof())
{
nr=0;
for(int i=0; i<clung; i++)
nr=nr*3+cuv[i]-'a';
fnd=find(nr);
if(fnd==ht[nr%MOD].end())
ht[nr%MOD].push_back(nr);
cin>>cuv;
}
p=1;
l=0;
for(int i=0; i<clung-1; i++)
{
l=l*3+text[i]-'a';
p=p*3;
}
for(int i=clung-1; i<lung; i++)
{
l=l%p;
l=l*3+text[i]-'a';
for(j=0; j<clung; j++)
if(find(l)!=ht[l%MOD].end())
break;
if(j<clung)
afis++;
}
cout<<afis;
return 0;
}