不是VIP会员,不能显示答案

题目解答

题目:
【问题描述】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.
考点:
分析:
解答:
评论:
老师: