Pagini recente » Cod sursa (job #2705760) | Cod sursa (job #2987020) | Cod sursa (job #1141030) | Cod sursa (job #3249775) | Cod sursa (job #100758)
Cod sursa(job #100758)
const m=666013;
m2=700001;
var c:char;
s:string;
i,j,n,nr,t,p,rez,nr2:longint;
v:array[0..666020]of boolean;
z:array[0..700200]of boolean;
x:array[1..10000110]of char;
begin
assign(input,'abc2.in');reset(input);
assign(output,'abc2.out');rewrite(output);
readln(x);
p:=1;
while ord(x[p])<>0 do
inc(p);
dec(p);
readln(s);
n:=length(s);
for i:=1 to n do
begin
nr:=nr*3+ord(s[i])-97;
nr2:=nr2*3+ord(s[i])-97;
while nr2>=m2 do
nr2:=nr2-m2;
while nr>=m do
nr:=nr-m;
end;
v[nr]:=true;
z[nr2]:=true;
nr:=0;
nr2:=0;
while not eof do
begin
readln(s);
for i:=1 to n do
begin
nr:=nr*3+ord(s[i])-97;
while nr>=m do
nr:=nr-m;
nr2:=nr2*3+ord(s[i])-97;
while nr2>=m2 do
nr2:=nr2-m2;
end;
v[nr]:=true;
z[nr2]:=true;
nr:=0;
nr2:=0;
end;
t:=1;
for i:=1 to n-1 do
t:=(t*3) mod m;
for i:=1 to n do
begin
nr:=nr*3+ord(x[i])-97;
while nr>=m do
nr:=nr-m;
nr2:=nr2*3+ord(x[i])-97;
while nr2>=m2 do
nr2:=nr2-m2;
end;
if (v[nr])and(z[nr2]) then
inc(rez);
for i:=n+1 to p do
begin
nr:=nr-t*(ord(x[i-n])-97);
if nr<0 then
nr:=nr+m;
nr:=nr*3+ord(x[i])-97;
nr2:=nr2-t*(ord(x[i-n])-97);
if nr2<0 then
nr2:=nr2+m2;
nr2:=nr2*3+ord(x[i])-97;
while nr2>=m2 do
nr2:=nr2-m2;
while nr>=m do
nr:=nr-m;
if (v[nr])and(z[nr2]) then
inc(rez);
end;
writeln(rez);
close(input);close(output);
end.