В
Все
М
Математика
А
Английский язык
Х
Химия
Э
Экономика
П
Право
И
Информатика
У
Українська мова
Қ
Қазақ тiлi
О
ОБЖ
Н
Немецкий язык
Б
Беларуская мова
У
Українська література
М
Музыка
П
Психология
А
Алгебра
Л
Литература
Б
Биология
М
МХК
О
Окружающий мир
О
Обществознание
И
История
Г
Геометрия
Ф
Французский язык
Ф
Физика
Д
Другие предметы
Р
Русский язык
Г
География
ввіна
ввіна
18.03.2020 06:41 •  Другие предметы

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

Показать ответ
Ответ:
Вано153
Вано153
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.
0,0(0 оценок)
Популярные вопросы: Другие предметы
Полный доступ
Позволит учиться лучше и быстрее. Неограниченный доступ к базе и ответам от экспертов и ai-bota Оформи подписку
logo
Начни делиться знаниями
Вход Регистрация
Что ты хочешь узнать?
Спроси ai-бота