Pagini recente » Cod sursa (job #1436955) | Cod sursa (job #1422978) | Cod sursa (job #1793207) | Cod sursa (job #2923222) | Cod sursa (job #1790237)
#include <cstdio>
#include <cstring>
#include <vector>
const int mod=666013,baza=3,prim=103;
using namespace std;
char sir[10000001],sir1[50001];
vector<unsigned int> v[mod+2];
unsigned int put[21];
int find_hash(unsigned int a)
{
int b=a%mod;
for(int i=0;i<v[b].size();i++)
if(v[b][i]==a) return 1;
return 0;
}
int main()
{
freopen("abc2.in","r",stdin);
freopen("abc2.out","w",stdout);
int l1,l,sol=0;
unsigned int a=0;
gets(sir);
l1=strlen(sir);
put[0]=1;
for(int i=1;i<20;i++)
put[i]=put[i-1]*baza;
while(gets(sir1))
{
l=strlen(sir1);
a=0;
for(int i=0;i<l;i++)
a=a+put[i]*(sir1[i]-'a');
v[a%mod].push_back(a);
}
a=0;
for(int i=0;i<l;i++)
a=a+put[i]*(sir[i]-'a');
sol+=find_hash(a);
for(int i=l;i<l1;i++)
{
a=a/baza;
a=a+put[l-1]*(sir[i]-'a');
sol=sol+find_hash(a);
}
printf("%d",sol);
return 0;
}