Pagini recente » Cod sursa (job #1201210) | Cod sursa (job #2860570) | Cod sursa (job #2555101) | Cod sursa (job #2563424) | Cod sursa (job #2349733)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("abc2.in");
ofstream fout("abc2.out");
const int NMAX = 10000005;
const int MOD = 10007;
vector <int> v[MOD+5];
char a[NMAX];
char c[25];
bool caut(long long x)
{
int aux=x%MOD;
for(int i=0;i<v[aux].size();i++) if(v[aux][i]==x) return 1;
return 0;
}
void hash_insert(long long x)
{
int aux=x%MOD;
if(caut(aux)==0)
{
v[aux].push_back(x);
}
}
int main()
{
fin >> (a+1);
int asize=strlen(a+1);
int n,baza;
while(!fin.eof())
{
fin >> (c+1);
n=strlen(c+1);
baza=3;
long long nr=0;
for(int i=1;i<=n;i++) nr=nr*baza+(c[i]-'a'+1);
hash_insert(nr);
}
long long putere=1;
long long nr=0;
for(int i=1;i<=n;i++)
{
nr=nr*baza+(a[i]-'a'+1);
if(i==n) break;
putere*=baza;
}
int rasp=0;
if(caut(nr)==1) rasp++;
for(int i=n+1;i<=asize;i++)
{
nr-=putere*(a[i-n]-'a'+1);
nr*=baza;
nr+=a[i]-'a'+1;
if(caut(nr)==1) rasp++;
}
fout << rasp;
return 0;
}