Pagini recente » Cod sursa (job #97611) | Cod sursa (job #1095361) | Cod sursa (job #3279557) | Borderou de evaluare (job #202235) | Cod sursa (job #180041)
Cod sursa(job #180041)
#include<cstdio>
#include<cstring>
#include<map>
std::map<int,bool>hash;
int x,y,i,n,nr,l;
char s2[100],s[10000001];
std::map<int,bool>::iterator end;
int main()
{
freopen("abc2.in","r",stdin);
freopen("abc2.out","w",stdout);
gets(s);
gets(s2);
l=strlen(s2);
goto calc;
while(!feof(stdin))
{
gets(s2);
calc:
x=0;
for(i=0;i<l;i++)
x=x*3+s2[i]-'a';
hash[x]=1;
}
end=hash.end();
n=strlen(s);
y=1;x=0;
for(i=0;i<l;i++)
{
s[i]-='a';
x=x*3+s[i];
y*=3;
}
if(hash.find(x)!=end) nr++;
for(;i<n;i++)
{
s[i]-='a';
x=x*3+s[i]-y*s[i-l];
if(hash.find(x)!=end) nr++;
}
printf("%d\n",nr);
fclose(stdout);
return 0;
}