Pagini recente » Cod sursa (job #353678) | Cod sursa (job #360770) | Cod sursa (job #1894505) | Cod sursa (job #2731250) | Cod sursa (job #2871587)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("abc2.in");
ofstream fout("abc2.out");
#define MOD1 30007
//#define MOD2 1000000013
#define hash1 3
//#define hash2 37
string A,B;
unordered_map <long long,bool> h;
unsigned long long sol,p1,p2,hashB1,hashA1,hashB2,hashA2,n,m,i;
int main()
{
fin>>A;
while(fin>>B)
{
m=B.size();
hashB1=0;
//fout<<B[0]-'a'<<'\n';
for(i=0; i<m; ++i)
{
hashB1=((hashB1*hash1)+(B[i]-'a'));
//hashB2=((hashB2*hash2)%MOD2+B[i])%MOD2;
}
h[hashB1%MOD1]=1;
}
p1=1;
n=A.size();
for(i=0; i<m; ++i)
{
hashA1=((hashA1*hash1)+(A[i]-'a'));
//hashA2=((hashA2*hash2)%MOD2+A[i])%MOD2;
if(i>0)
{
p1=(p1*hash1);
//p2=(p2*hash2)%MOD2;
}
}
if(h[hashA1%MOD1]==1)sol++;
for(i=m; i<n; ++i)
{
hashA1=(hash1*(hashA1-(((A[i-m]-'a')*p1)))+(A[i]-'a'));
if(h[hashA1%MOD1]==1)sol++;
}
fout<<sol;
return 0;
}