Рассмотрим задачу пошагово. У нас есть число: 1357924680. Нужно для Тани выбрать 5 цифр для удаления так, чтобы осталась максимально возможная цифровая последовательность, а для Лёши — чтобы оставшаяся цифра была минимальной.
Общее описание подхода:
- При удалении цифр, чтобы получить максимальное число, выбираем так: на каждом шаге ищем максимально возможную цифру среди доступных и сохраняем её, удаляя остальные, чтобы оставить наибольший результат.
- Для получения минимального числа — делаем наоборот: ищем минимальную возможную цифру среди доступных и сохраняем её.
Решение для Тани (максимизируем число):
Шаги:
- Всего цифр: 10 (1, 3, 5, 7, 9, 2, 4, 6, 8, 0)
- Нужно удалить 5 цифр -> оставить 5 цифр.
- Алгоритм: используем стек, чтобы выбрать максимум по порядку:
- Перебираем цифры слева направо.
- Если текущая цифра больше верхней в стеке и осталось удалять цифры (
k— число удаляемых), то снимаем меньшие цифры из стека, чтобы получилась более крупная цифра.
Реализация:
Изначально
k=5Перебираем цифры:
Итерация:
текущая цифра: 1 стек: [] k=5Добавляем 1 в стек.
следующая цифра: 3 так как 3 > 1 и k>0, снимаем 1 k=4, стек: [] добавляем 3следующая цифра: 5 5 > 3 и k>0, снимаем 3 k=3, стек: [] добавляем 5следующая цифра: 7 7 > 5 и k>0, снимаем 5 k=2, стек: [] добавляем 7следующая цифра: 9 9 > 7 и k>0, снимаем 7 k=1, стек: [] добавляем 9следующая цифра: 2 2 < 9 — не снимаем добавляем 2следующая цифра: 4 4 > 2, снимаем 2 k=0, стек: [9, 4], добавляем 4Но при этом все цифры после этого остаются — так как k=0, больше ничего не снимаем.
Аналогично, продолжая по тому же принципу, окончательный стек формирует число.
Итог:
Обрабатываем все цифры по такому правилу: после завершения, результирующая последовательность — это вершина стека.
Решение для Лёши (минимизируем число):
Используем аналогичный алгоритм, только сейчас ищем минимальную цифру при выборе, чтобы получилась минимальная последовательность.
- В этом случае, при переборе цифр, если текущая цифра меньше верхней в стеке и есть еще цифры для удаления, снимаем верхние.
Итоги:
Таня удаляет 5 цифр так, чтобы осталось число:
- 1, 3, 5, 7, 9, 4, 6, 8, 0 (после выбора максимальных возможных)
- В результате получается число: 9758640 (после выбора оптимальных цифр).
Лёша удаляет 5 цифр так, чтобы осталось:
- 1, 2, 3, 4, 6, 8, 0 (минимально возможное число в порядке выбора)
- В результате получится число: 123460.
Итальный ответ:
- Число, которое написала Таня: 9758640
- Число, которое написал Лёша: 123460
Если нужны более подробные объяснения или код — пожалуйста, скажите!