Найти в Дзене

Задача 535. Неправильное сложение

Задача из темы про длинную арифметику, но в реальности просто на работу с числами. Рассмотрим, как можно удобно использовать преобразование к строке, но сначала читаем условие: Володя использует оригинальное сложение. Первым делом, давайте тоже напишем функцию, которая будет складывать два числа таким же способом: В этой функции в цикле складываются последние две цифры входных чисел. Благодаря целочисленному делению на 10, эти цифры удаляются из чисел, и на следующей итерации цикла уже обрабатываются предпоследние цифры. Обрабатываемые цифры после сложения через преобразование к строке разворачиваются и добавляются к ответу. Таким образом ответ формируется в строке в обратном порядке. Но перед возвратом из функции, ответ снова приводим к корректному (по мнению Володи) числу. Теперь напишем ещё одну вспомогательную функцию, которая последовательно складывает три числа: Основное решение, как обычно, начинается со считывания данных: Переберём все возможные варианты последовательного сложе

Задача из темы про длинную арифметику, но в реальности просто на работу с числами. Рассмотрим, как можно удобно использовать преобразование к строке, но сначала читаем условие:

Условие задачи с сайта acmp.ru
Условие задачи с сайта acmp.ru

Володя использует оригинальное сложение. Первым делом, давайте тоже напишем функцию, которая будет складывать два числа таким же способом:

Неправильное сложение двух чисел
Неправильное сложение двух чисел

В этой функции в цикле складываются последние две цифры входных чисел. Благодаря целочисленному делению на 10, эти цифры удаляются из чисел, и на следующей итерации цикла уже обрабатываются предпоследние цифры.

Обрабатываемые цифры после сложения через преобразование к строке разворачиваются и добавляются к ответу. Таким образом ответ формируется в строке в обратном порядке.

Но перед возвратом из функции, ответ снова приводим к корректному (по мнению Володи) числу.

Теперь напишем ещё одну вспомогательную функцию, которая последовательно складывает три числа:

Последовательное сложение трёх чисел
Последовательное сложение трёх чисел

Основное решение, как обычно, начинается со считывания данных:

Ввод данных и преобразование их к числам
Ввод данных и преобразование их к числам

Переберём все возможные варианты последовательного сложения входных чисел и сложим результаты во множество.

Все три варианта сложения трёх чисел
Все три варианта сложения трёх чисел

Использовать множество удобно, так как все значения в нём уникальны. То есть в случае получения одинаковых сумм, значение будет записано единожды.

Это значит, что проверку на YES/NO можно сделать простым условием, на размер множества:

Вывод ответа
Вывод ответа

А для вывода всех возможных результатов множество преобразовываем в список и сразу сортируем, так как это требуется по условию задачи. Чтобы числа из списка выводились на отдельной строке, используем параметр sep.

Если бы решение было на строго типизированном языке, то могло бы возникнуть переполнение типа int, но наличие 64-битных целых чисел полностью выводит эту задачу из категории Длинная арифметика.

Предыдущий выпуск: Задача 534. Клавиатура - 2

Задонатить автору на бусти.

Я очень хочу, чтобы мои советы были полезны вам, а для того, чтобы быстрее всех получать новые статьи можно подписаться на мой канал.