Pagini recente » Cod sursa (job #2217355) | Cod sursa (job #738158) | Cod sursa (job #2115931) | Cod sursa (job #1318487) | Cod sursa (job #2038428)
#include <bits/stdc++.h>
using namespace std;
unsigned int m,MOD=666013,lu,pu,i,cp,nr,j,nrr;
long long ans;
char st[10000010],stt[40];
vector<int>h[666023];
unsigned int caut(unsigned int nr)
{
int nrr=nr%MOD;
for(auto &it:h[nrr])
if(it==nr)
{
return 1;
}
return 0;
}
int main()
{
freopen("abc2.in","r",stdin);
freopen("abc2.out","w",stdout);
gets(st+1);
lu=strlen(st+1);
gets(stt+1);
m=strlen(stt+1);
pu=1;
for(i=m; i>=1; --i)
{
nr+=pu*(stt[i]-'a');
pu*=3;
}
nrr=nr%MOD;
h[nrr].push_back(nr);
while(!feof(stdin))
{
gets(stt+1);
nr=0;
pu=1;
for(i=m; i>=1; --i)
{
nr+=pu*(stt[i]-'a');
pu*=3;
}
nrr=nr%MOD;
h[nrr].push_back(nr);
}
nr=0;
pu=1;
for(i=m; i>=1; --i)
{
nr+=pu*(st[i]-'a');
pu*=3;
}
ans=caut(nr);
pu/=3;
for(i=m+1; i<=lu; ++i)
{
nr-=pu*(st[i-m]-'a');
nr*=3;
nr+=(st[i]-'a');
ans+=caut(nr);
}
printf("%lld\n",ans);
return 0;
}