Pagini recente » Cod sursa (job #645559) | Cod sursa (job #2391902) | Cod sursa (job #1503811) | Cod sursa (job #2695194) | Cod sursa (job #2871612)
#include <cstdio>
#include <cstring>
#include <vector>
#define mod 10007
#define prim 3
using namespace std;
unsigned int hash1,hashm,p=1,poz;
int sa,sb,i;
char s[10000005],d[21];
vector<unsigned int> v[mod];
bool searchh(unsigned int h)
{
unsigned p=v[h%mod].size(),i;
for(i=0;i<p;i++)
{
if(v[h%mod][i]==h) return true;
}
return false;
}
int main()
{
freopen("abc2.in","r",stdin);
freopen("abc2.out","w",stdout);
scanf("%s",s);
sa=strlen(s);
while(scanf("%s",d)!=EOF)
{
sb=strlen(d);
hash1=0;
for(i=0; i<sb; i++)
{
hash1=hash1*prim+d[i]-'a';
}
if(!searchh(hash1))
{
v[hash1%mod].push_back(hash1);
}
}
for(i=0;i<sb;i++)
{
hashm=(hashm*prim)+s[i]-'a';
if(i>0)
{
p=p*prim;
}
}
if(searchh(hashm)) poz++;
for(i=sb;i<sa;i++)
{
hashm=((prim*(hashm-(((s[i-sb]-'a')*p))))+s[i]-'a');
if(searchh(hashm)) poz++;
}
printf("%d\n",poz);
return 0;
}