Pagini recente » Cod sursa (job #2768323) | Cod sursa (job #1852939) | Cod sursa (job #2861739) | Cod sursa (job #1548763) | Cod sursa (job #2397900)
#include <fstream>
#include <cstring>
#include <vector>
#define mod 10007
using namespace std;
ifstream fin ("abc2.in ");
ofstream fout("abc2.out");
vector <long long> v[10008];
char s1[10000001],s2[22];
long long p[22],sol;
int caut(long long x,int k)
{
for(int i=0;i<v[k].size();i++)
if(v[k][i]==x)
return 1;
return 0;
}
int main()
{
fin.getline(s1+1,10000001);
p[0]=1;
for(int i=1;i<=19;i++)
p[i]=p[i-1]*3;
while(fin>>(s2+1))
{
int x=0;
for(int i=1;s2[i]!=0;i++)
x=x*3+s2[i]-'a';
int k=x%mod;
if(!caut(x,k))
v[k].push_back(x);
}
int n=strlen(s1+1);
int m=strlen(s2+1);
int nr=0;
for(int i=1;i<=m;i++)
nr=nr*3+s1[i]-'a';
if(caut(nr,nr%mod))
sol++;
for(int i=m+1;s1[i]!=0;i++)
{
nr=(nr-p[m-1]*(s1[i-m]-'a'))*3+s1[i]-'a';
if(caut(nr,nr%mod)==1)
sol++;
}
fout<<sol;
return 0;
}