e-olimp 2392. Интересная сумма

Ссылка на задачу.

Дано трёхзначное натуральное число [latex]N[/latex]. Определить сумму наибольшего и наименьшего трёхзначных чисел, которые могут быть образованы из числа [latex]N[/latex] перестановкой цифр.

Входные данные

Натуральное число [latex]N[/latex] [latex]\left(100\leq N\leq 999 \right)[/latex].

Выходные данные

Ответ к задаче.

Пройденные тесты (C++).

Java.

Код программы (C++):

Java:

Когда я увидела эту задачу, то мне в голову сразу пришло решение с применением массивов. Изначально пользователю предлагается ввести трёхзначное число, которое я впоследствии раскладываю на отдельные элементы массивов, один из которых определяет минимальное трёхзначное число, а второй, в свою очередь,  — максимальное.

Затем я сортирую первый массив по возрастанию, а второй по убыванию.

Далее проблема возникает именно с первым массивом, так как его первым элементом может оказаться 0, что нам не подходит, так как наше минимальное число, образованное перестановкой, обязано быть трёхзначным по условию. Для этого я делаю 2 несложных проверки, в результате которых первый элемент массива меняется местами либо со вторым, либо с третьим.

После чего я перевожу элементы массива в одно трёхзначное число и наконец-то получаю сумму.

Сложность задачи 66%.

Related Images:

6 thoughts on “e-olimp 2392. Интересная сумма

  1. — Метки забыли?
    — Результаты лучше не картинкой, а ссылкой.
    — «знаменует» не очень точно подобранное слово
    — Решение хорошо масштабируется. Т.е. его легко переделать для k-значных чисел. Только два массива совсем ни к чему. Достаточно одного массив и складывать элементы, стоящие на одинаковом расстоянии от начала и от конца.
    — Зачем переменную для хранения N называть a?

    P.S. У меня более «ленивое» и не масштабируемое решение этой задачи

    • Исправила: метки поставила, результат исправила, слово заменила и переменную переименовала.
      Я не понимаю, как можно переделать эти два массива в один, так как они не есть отображением друг друга, в первом массиве приходилось менять местами элементы, если они были 0 и стояли на первом месте.
      Спасибо за исправления. И ещё: у меня запись не отображается, пишет, что страница не найдена. Может, её следует добавить заново?

    • Вынесла в отдельную функцию.

Добавить комментарий