procedure writesymbol(j:longint); begin write(chr(ord('a')+j-1)); end;
procedure print(x:longint); var z,h,p:longint; begin z := 0; p := 0; while true do begin p := p + 1; if b[p] = false then z := z + 1; if z = x then break; end; x := p; b[x] := true; writesymbol(x); end;
function fa_l(a,b:longint):longint; var s,h:longint; begin s := 1; for h := a to b do s := s * h; fa_l := s; end;
begin read(n,k,m);
d := fa_l(n-k+1,n-1);
for i := k downto 1 do begin print((m - 1) div d + 1); if m mod d = 0 then m := d else m := m mod d; d := d div (n - (k - i + 1)); end; end.
Ответить на вопрос
Поделитесь своими знаниями, ответьте на вопрос:
Выполнение практической работы. Инструкция во вложенном файле.
b:array[1..26] of boolean;
procedure writesymbol(j:longint);
begin
write(chr(ord('a')+j-1));
end;
procedure print(x:longint);
var z,h,p:longint;
begin
z := 0;
p := 0;
while true do
begin
p := p + 1;
if b[p] = false then z := z + 1;
if z = x then break;
end;
x := p;
b[x] := true;
writesymbol(x);
end;
function fa_l(a,b:longint):longint;
var s,h:longint;
begin
s := 1;
for h := a to b do s := s * h;
fa_l := s;
end;
begin
read(n,k,m);
d := fa_l(n-k+1,n-1);
for i := k downto 1 do
begin
print((m - 1) div d + 1);
if m mod d = 0 then m := d else
m := m mod d;
d := d div (n - (k - i + 1));
end;
end.