Pagini recente » Cod sursa (job #1517006) | Cod sursa (job #114424) | Cod sursa (job #1560058) | Cod sursa (job #1979718) | Cod sursa (job #192980)
Cod sursa(job #192980)
var a,b:ansistring;
v:array[1..1000]of longint;
n,nr,i,j,k:longint;
p,h,z,l,o,aux:int64;
f:text;
begin
assign(f,'strmatch.in');
reset(f);
readln(f,a);
readln(f,b);
close(f);
k:=length(a);
n:=length(b);
z:=65;
p:=z;
for i:=1 to k-1 do
begin
p:=(p*z)mod 100007;
if(a[i] in ['0'..'9'])then l:=48
else
if(a[i] in ['A'..'B'])then l:=55
else l:=61;
h:=(h*z+ord(a[i])-l)mod 100007;
if(b[i] in ['0'..'9'])then l:=48
else
if(b[i] in ['A'..'B'])then l:=55
else l:=61;
o:=(o*z+ord(b[i])-l)mod 100007;
end;
if(a[k] in ['0'..'9'])then l:=48
else
if(a[k] in ['A'..'B'])then l:=55
else l:=61;
h:=(h*z+ord(a[k])-l)mod 100007;
for i:=k to n do
begin
if(b[i] in ['0'..'9'])then l:=48
else
if(b[i] in ['A'..'B'])then l:=55
else l:=61;
o:=(o*z+ord(b[i])-l)mod 100007;
if(i>k)then begin if(b[i-k] in ['0'..'9'])then l:=48
else
if(b[i-k] in ['A'..'B'])then l:=55
else l:=61;
aux:=((ord(b[i-k])-l)*p)mod 100007;
o:=o-aux;
if o<0 then o:=o+100007;
end;
if(o=h)then begin nr:=nr+1;
if(nr<=1000)then v[nr]:=i-k;
end;
end;
assign(f,'strmatch.out');
rewrite(f);
writeln(f,nr);
for i:=1 to nr do
write(f,v[i],' ');
writeln(f);
close(f);
end.