Задание №5 — Анализ простейших алгоритмов
Автомат получает на вход трёхзначное число. По этому числу строится новое число по следующим правилам:
1) Перемножаются все цифры исходного числа.
2) Суммируются все цифры исходного числа.
3) Полученные два числа записываются друг за другом в порядке невозрастания (без разделителей).
Пример. Исходное число: 621. Произведение цифр: сумма цифр: Результат: 129.
Укажите наибольшее число, при обработке которого автомат выдаст число 24019.
Правильный ответ
865
Пояснение
Решение:
Автомат склеивает два числа: произведение цифр и сумму цифр , причём первым записывается большее из них. Значит, строку 24019 надо разрезать на две части так, чтобы левая часть была не меньше правой и ни одна из них не начиналась с нуля. Подходят только два разреза: 240 и 19, либо 2401 и 9 (вариант 2 и 4019 отпадает, так как , а разрез 24 и 019 невозможен из-за ведущего нуля).
У трёхзначного числа сумма цифр не превосходит , а произведение — . Число 2401 не может быть ни суммой, ни произведением, поэтому второй разрез отпадает, и остаётся , .
Ищем цифры с условиями и . Такой набор единственный: . Наибольшее трёхзначное число из этих цифр — 865. Проверка: , , , результат «240» + «19» = 24019.
res = []
for n in range(100, 1000):
a, b, c = n // 100, n // 10 % 10, n % 10
p, s = a * b * c, a + b + c
if str(max(p, s)) + str(min(p, s)) == '24019':
res.append(n)
print(res) # [568, 586, 658, 685, 856, 865]
print(max(res)) # 865
Ответ: 865