LASCALE - Quả Cân

Tác giả: RR

Ngôn ngữ: Pascal

{$MODE OBJFPC}
var
  n: integer;
  lt, heso: array[0..20] of integer;

procedure gen(i, n: integer);
    begin
      if (i < 0) then exit;
      heso[i] := n div lt[i];
      gen(i-1, n mod lt[i]);
    end;

procedure solve();
    var
      i, cnt: integer;
    begin
      lt[0] := 1;
      for i := 1 to 19 do lt[i] := lt[i-1]*3;
      gen(19,n);

      for i := 0 to 19 do
      if (heso[i] > 1) then
        begin
          dec(heso[i], 3);
          inc(heso[i+1]);
        end;

      cnt := 0; for i := 0 to 19 do if (heso[i]<0) then inc(cnt);
      write(cnt); for i := 0 to 19 do if (heso[i]<0) then write(' ',lt[i]); writeln;
      cnt := 0; for i := 0 to 19 do if (heso[i]>0) then inc(cnt);
      write(cnt); for i := 0 to 19 do if (heso[i]>0) then write(' ',lt[i]); writeln;
    end;

begin
  read(n);
  solve();
end.

Download