【问题描述】01串统计。给定一个01串,请你找出长度介于a,b之间,重复出现次数最多的01串。
输入:a,b(0<a<=b<=12)以及
由0,1组成的数串,由‘.’结尾。
输出:要求的串。 提示:本程序中将01序列转换为2进制数存取。
【参考程序】
program shuchuan;
var i,j,s,k,a,b,max:integer;
m:array[1..8192] of integer;
two,v:array[1..20] of integer;
c:char;
begin
for i:=1 to 13 do
two[i]:=1 shl i ;
readln(a,b);
read(c);
s:=1;k:=1;
while c<>’.’ do begin
s:=s shl 1+ord(c)-48;
if k>b then
s:=((s-two[b+1]) mod two[b])+two[b];
inc(m[s]);
if k<b then
for i:=a to k-1 do
inc(m[s mod two[i]+two[i]]) ;
inc(k);
read(c);
end;
for i:=two[b] to two[b+1] do
if m[i]>0 then
for j:=a to b-1 do
m[(i mod two[j])+two[j]]:= m[i mod two[j]+two[j]]+m[i] ;
max:=0;
for i:=two[a] to two[b+1] do
if m[i]>max then max:=m[i];
for i:=two[a] to two[b+1] do
if m[i]=max then begin
j:=0;k:=i;
repeat
inc(j);v[j]:=k mod 2; k:=k div 2;
until k=1 ;
while j>0 do begin write(v[j]);dec(j) end;
writeln;
end;
end.