• PASCAL. Перестановка
    Даны пять чисел:
     1890
     83849
     126631
     146531
     32749972
    Для каждого найдите минимальное целое число, которое больше данного и состоит
    из такого же набора цифр. Например, для числа 1932 это 2139, а для числа 1212 — это
    1221.
    В ответ запишите пять целых чисел. Каждое число должно быть в отдельной строке.
    Порядок записи менять нельзя. Если вы не можете найти ответ для какого-то числа,
    то вместо ответа поставьте знак «-» (минус без кавычек).

Ответы 1

  • PascalABC.NET 3.4.2, сборка 1863 от 10.11.2018Внимание! Если программа не работает, обновите версию!

    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
    • Автор:

      wilmamlgm
    • 5 лет назад
    • 0
  • Добавить свой ответ

Войти через Google

или

Забыли пароль?

У меня нет аккаунта, я хочу Зарегистрироваться

How much to ban the user?
1 hour 1 day 100 years