var
a,b:array[1..100000] of char;
next:array[0..100000] of longint;
t:boolean;
len1,len2,i,x:longint;
ch:char;
begin
read(ch);len1:=0;
while ord(ch)<>13 do begin
inc(len1);a[len1]:=ch;read(ch);
end;readln;
read(ch);len2:=0;
while ord(ch)<>13 do begin
inc(len2);b[len2]:=ch;read(ch);
end;readln;
next[0]:=0;next[1]:=0;
for i:=2 to len2 do begin
x:=next[i-1];
while (x>0) and (b[x+1]<>b[i]) do x:=next[x];
if b[x+1]=b[i] then next[i]:=x+1 else next[i]:=0;
end;
t:=false;x:=0;
for i:=1 to len1 do begin
while (x>0) and (b[x+1]<>a[i]) do x:=next[x];
if b[x+1]=a[i] then inc(x);
if x=len2 then begin
t:=true;break;
end;
end;
writeln(t);
end.
转载请注明原文地址: https://ju.6miu.com/read-676554.html