Pascal. перестановка даны пять чисел: 1890 83849 126631 146531 32749972 для каждого найдите минимальное целое число, которое больше данного и состоит из такого же набора цифр. например, для числа 1932 это 2139, а для числа 1212 — это 1221. в ответ запишите пять целых чисел. каждое число должно быть в отдельной строке. порядок записи менять нельзя. если вы не можете найти ответ для какого-то числа, то вместо ответа поставьте знак «-» (минус без кавычек).
function Conv(s: string): string;
begin
var d := s.ToCharArray;
var (i, found) := (d.High, False);
while i >= 1 do
if d[i] > d[i - 1] then
begin
found := True;
break
end
else i -= 1;
if found then
begin
s := s[:i];
var c := d[i - 1];
d := d[i - 1:];
d.Sort;
var j := d.IndexOf(c) + 1;
s += (d[j] + d?[:j] + d?[j + 1:]).JoinIntoString
end
else s := '-';
Result := s
end;
begin
var ms := Arr('1890', '83849', '126631', '146531', '32749972');
foreach var s in ms do
Conv(s).Println
end.
19088389413126615134632772499