Pagini recente » Cod sursa (job #91752) | Cod sursa (job #3139744) | Cod sursa (job #2884554) | Cod sursa (job #2669984) | Cod sursa (job #1790230)
#include <cstdio>
#include <cstring>
#include <vector>
const int mod=666013,baza=3,prim=103;
using namespace std;
char sir[10000001],sir1[50001];
vector<long long> v[mod+2];
long long put[21];
int find_hash(long long 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;
long long 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;
}