Написать программу, которая по двум заданным строкам, представляющим числа A и B в фибоначчиевой системе счисления,

chuvak1414 chuvak1414    3   16.04.2019 22:50    5

Ответы
9827816 9827816  16.04.2019 22:50
Var b, c, d : string;
  a : array [1..255] of byte;
  i, k, m : integer;
  f1, f2 : text;
begin
  assign(f1,'input.txt'); reset(f1);
  readln(f1,b); readln(f1,c);
  if length(b)<length(c) then
  begin d:=b; b:=c; c:=d end;
  for i:=1 to length(b)-length(c) do c:='0'+c;
  m:=length(b);
  for i:=1 to 255 do a[i]:=0;
  for i:=1 to m do
    a[i]:=ord(b[m+1-i])+ord(c[m+1-i])-96;
  k:=1;
  repeat
    if k=1 then
    begin
      if a[1]>1 then
      begin
        a[1]:=0; if m<2 then m:=2; a[2]:=a[2]+1
      end;
      k:=k+1
    end;
    if k=2 then
    begin
      if a[2]<2 then
        begin
          if (a[2]=1) and (a[1]=1) then
          begin
            a[1]:=0; a[2]:=0; if m<3 then m:=3; a[3]:=a[3]+1
          end;
          k:=k+1
        end
      else
      begin
        if m<3 then m:=3; a[3]:=a[3]+1;
        if a[1]=0 then
          begin
            a[1]:=a[1]+1; a[2]:=a[2]-2; k:=1
          end
        else
          begin
            a[1]:=0; a[2]:=a[2]-1;
          end
      end
    end;
    if k>2 then
      if a[k]<2 then
        begin
          if (a[k-1]=1) and (a[k]=1) then
          begin
            a[k-1]:=0; a[k]:=0; if k+1>m then m:=k+1; a[k+1]:=a[k+1]+1
          end;
          k:=k+1
        end
      else
        begin
          if k+1>m then m:=k+1; a[k+1]:=a[k+1]+1;
          if a[k-1]=0 then
            begin
              a[k-2]:=a[k-2]+1; a[k]:=a[k]-2; k:=k-2
            end
          else
            begin
              a[k-1]:=0; a[k]:=a[k]-1
            end
        end
  until k>m;
  assign(f2,'output.txt'); rewrite(f2);
  for i:=m downto 1 do write(f2,a[i]); close(f2)
end.
ПОКАЗАТЬ ОТВЕТЫ
Другие вопросы по теме Другие предметы