Pagini recente » Cod sursa (job #320785) | Cod sursa (job #697422) | Cod sursa (job #1496881) | Cod sursa (job #930613) | Cod sursa (job #2474719)
#include <bits/stdc++.h>
using namespace std;
ifstream fin("abc2.in");
ofstream fout("abc2.out");
vector<unsigned int> v[15018];
char s[10000005];
int main()
{
//citire text
char c[22]={0};int i=0,auxmod=0,modi=15017,len=0,lens=0,gasit=0,j=0,dim=0,p3[22]; unsigned int nr=0,p=1; bool ok=0;
fin>>s;
fin>>c; len=strlen(c);
p3[0]=1; for(i=1;i<=21;++i) p3[i]=p3[i-1]*3;
for(i=nr=0;i<len;++i)nr+=p3[i]*(c[i] - 'a');
v[nr%modi].push_back(nr);
while(fin>>c){
for(i=nr=0;i<len;i++)nr+=p3[i]*(c[i] - 'a');
auxmod=nr%modi;
ok=0;
for(unsigned int it : v[auxmod])
if(it==nr){ok=1; break;}
if(!ok)v[auxmod].push_back(nr);
}
lens=strlen(s);
for(i=nr=0;i<len;++i)nr+=p3[i]*(s[i] - 'a');
while(s[i]){ ok=0;
auxmod=nr%modi;
for(unsigned int it : v[auxmod])
if(it==nr){ok=1; break;}
if(ok)++gasit;
nr/=3;
nr+=p3[len-1]*(s[i] - 'a');
++i;
}
ok=0;
auxmod=nr%modi;
for(unsigned int it : v[auxmod])
if(it==nr){ok=1; break;}
if(ok)++gasit;
fout<<gasit;
return 0;
}