Pagini recente » Cod sursa (job #958599) | Cod sursa (job #2827866) | Cod sursa (job #2600171) | Cod sursa (job #1368890) | Cod sursa (job #1766247)
#include <fstream>
#include <string.h>
#include <set>
#include <string.h>
#define M 667013
using namespace std;
char s[10000010],c[30];
unsigned n,len,p[30],h,ans;
set<int> t[M];
int main()
{
ifstream fin("abc2.in");
ofstream fout("abc2.out");
p[0]=1;
for(unsigned i=1;i<=20;i++)
p[i]=p[i-1]*3;
fin>>s;
n=strlen(s);
while(fin>>c) {
if(!len) len=strlen(c);
h=0;
for(unsigned i=0;i<len;i++)
h+=p[i]*(c[i]-'a');
t[h%M].insert(h);
}
h=0;
for(unsigned i=0;i<len;i++)
h+=p[i]*(s[i]-'a');
if(t[h%M].find(h)!=t[h%M].end())
ans++;
for(unsigned i=len;i<n;i++) {
h/=3;
h+=p[len-1]*(s[i]-'a');
if(t[h%M].find(h)!=t[h%M].end())
ans++;
}
fout<<ans;
return 0;
}