Pagini recente » Cod sursa (job #457656) | Cod sursa (job #1539481) | Cod sursa (job #1572445) | Cod sursa (job #164619) | Cod sursa (job #173553)
Cod sursa(job #173553)
var t,x:array[0..10001000]of shortint;
v,lo:array[0..1666013,0..2]of longword;
{:array[0..1666013,0..2]of shortint; }
h:array[0..1666013]of shortint;
pol:array[0..50]of shortint;
m,n,p,l,b,pc,i,j,k,a,mo,pro:longword;
s:string;
c:char;
w:text;
begin
m:=0;
assign(w,'abc2.in');
reset(w);
while not eoln(w) do
begin
m:=m+1;
read(w,c);
if c='a' then t[m]:=0
else
if c='b' then t[m]:=1
else
if c='c' then t[m]:=2;
end;
readln(w);
n:=0;
while not eof(w)do
begin
n:=n+1;
readln(w,s);
l:=length(s);
p:=1;
for i:=1 to l do
p:=p*3;
a:=0;
for i:=1 to l do
begin
p:=p div 3;
if s[i]='b' then a:=a+p
else
if s[i]='c' then a:=a+2*p;
end;
mo:=a mod 666013;
h[mo]:=h[mo]+1;
v[mo,h[mo]]:=a;
lo[mo,h[mo]]:=l;
pol[l]:=1;
end;
close(w);
p:=1;
for k:=1 to 20 do
begin
p:=p*3;
b:=0;
if pol[k]=1 then
begin
for i:=1 to k-1 do
begin
b:=b*3;
pro:=t[i];
b:=b+pro;
end;
for i:=k to m do
begin
b:=b*3;
pro:=t[i];
b:=b+pro;
pro:=t[i-k];
b:=b-pro*p;
mo:=b mod 666013;
for j:=1 to h[mo] do
if(v[mo,j]=b)and(lo[mo,j]=k)and(x[i-k+1]=0)then begin pc:=pc+1;
x[i-k+1]:=1;
end;
end;
end;
end;
assign(w,'abc2.out');
rewrite(w);
writeln(w,pc);
close(w);
end.