NOTE - Gấp tiền

Tác giả: flashmt

Ngôn ngữ: Pascal

const t:array[1..3] of byte=(0,0,1);
      r:array[0..1] of char=('D','U');
var n:byte;
    m:longint;
    a:array[1..31] of qword;
procedure init;
var i:byte;
begin
     a[1]:=2;
      for i:=2 to 31 do a[i]:=a[i-1]*2;
end;
function calc(n:byte;m:longint):byte;
var kt:boolean;
begin
     if m=a[n] div 2 then exit(0);
     if n=2 then exit(t[m]);
     kt:=(m>a[n] div 2);
     if kt then calc:=1-calc(n-1,a[n]-m)
     else calc:=calc(n-1,m);
end;
begin
     init;
     repeat
           readln(n,m);
           if n+m=0 then break;
           m:=a[n]-m;
           if n=2 then writeln(r[t[m]])
           else writeln(r[calc(n,m)]);
     until false;
end.

Download