Отсортируйте четыре цифры и поставьте две наименьшие в разряд десятков, остальные — в единицы. Минимальная сумма равна 10·(a+b)+c+d для a≤b≤c≤d.
Наименьшая возможная сумма двух чисел, образованных из цифр четырёхзначного числа
Отсортируйте четыре цифры и поставьте две наименьшие в разряд десятков, остальные — в единицы. Минимальная сумма равна 10·(a+b)+c+d для a≤b≤c≤d.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Дано четырехзначное целое value. Требуется разбить его цифры на две группы (каждая из групп содержит хотя бы одну цифру), произвольно переставить цифры внутри групп и из полученных последовательностей сформировать два новых числа. Необходимо найти минимальную сумму этих двух чисел. Ведущие нули допускаются, однако каждая из четырёх цифр должна быть использована ровно один раз.
Пример 1: Ввод: value = 2932 Вывод: 52 Объяснение:
- Цифры: 2, 9, 3, 2.
- Делим и переставляем: 23 и 29.
- Сумма: 23 + 29 = 52.
- Это минимальная возможная сумма (например, 2 + 329 = 331 — больше).
Пример 2: Ввод: value = 4009 Вывод: 13 Объяснение:
- Цифры: 4, 0, 0, 9.
- Делим и переставляем: 4 и 009 (009 эквивалентно 9, так как ведущие нули не влияют на значение).
- Сумма: 4 + 9 = 13.
- Это минимальная возможная сумма (например, 40 + 09 = 49 — больше).
Пример 3: Ввод: value = 1000 Вывод: 1 Объяснение:
- Цифры: 1, 0, 0, 0.
- Делим и переставляем: 1 и 000 (000 равно 0).
- Сумма: 1 + 0 = 1.
- Это минимальная возможная сумма (например, 10 + 00 = 10 — больше).
Ответ
Отсортируйте четыре цифры и поставьте две наименьшие в разряд десятков, остальные — в единицы. Минимальная сумма равна 10·(a+b)+c+d для a≤b≤c≤d.
Реализация:
def minimum_sum(value):
if type(value) is not int or not 1000 <= value <= 9999:
raise ValueError('Expected four-digit positive integer')
a, b, c, d = sorted(map(int, str(value)))
return 10 * (a + b) + c + d
Для 2932 получается 52, для 4009 — 13, для 1000 — 1. Ведущие нули разрешены. Разбиение 3+1 не улучшит результат: дополнительный старший разряд имеет больший вес; при нулевой старшей цифре возможна лишь та же минимальная сумма.