NOTE - Gấp tiền

Tác giả: RR

Ngôn ngữ: Pascal

var
  n,p:longint;

function get(n,p:longint; rev:boolean):longint;
    var
      mid:longint;
    begin
      if not rev then
        begin
          if n=1 then exit(1);
          mid:=1 shl (n-1);
          if p=mid then exit(1);
          if p<mid then exit(get(n-1,p,not rev));
          if p>mid then exit(get(n-1,p-mid,rev));
        end
      else
        begin
          if n=1 then exit(0);
          mid:=1 shl (n-1);
          if p=mid then exit(0);
          if p>mid then exit(get(n-1,p-mid,not rev));
          if p<mid then exit(get(n-1,p,rev));
        end;
    end;

begin
  read(n,p);
  while (n>0) or (p>0) do
    begin
      if get(n,p,false)=1 then writeln('D')
      else writeln('U');
      read(n,p);
    end;
end.

Download