Задача А
Идея решения: Нам предлагают идти от конца операции. Давайте определим обратные действия для каждой операции:
- Если <p>Unable to parse markup [type=CF_MATHJAX] четное, при обратной операции мы умножаем на 2.
- Если <p>Unable to parse markup [type=CF_MATHJAX] нечетное, при обратной операции мы проверяем, можно ли получить <p>Unable to parse markup [type=CF_MATHJAX] как <p>Unable to parse markup [type=CF_MATHJAX], и если это число нечетное, то делим на него.
Таким образом, просто применяем обратные операции и выводим результат.
Алгоритм:
- Читаем число <p>Unable to parse markup [type=CF_MATHJAX].
- Если оно четное — умножаем на 2.
- Если нечетное — проверяем условие <p>Unable to parse markup [type=CF_MATHJAX] и делим, если подходит.
- Выводим результат.
Задача Б
Идея решения: Пусть нам дан массив, и мы хотим гарантировать <p>Unable to parse markup [type=CF_MATHJAX]
, где массив — перестановка.Замечаем: любое число <p>Unable to parse markup [type=CF_MATHJAX]
можно превратить в <p>Unable to parse markup [type=CF_MATHJAX], добавив <p>Unable to parse markup [type=CF_MATHJAX].Алгоритм:
- Для каждого элемента <p>Unable to parse markup [type=CF_MATHJAX]:
- Если <p>Unable to parse markup [type=CF_MATHJAX], добавляем <p>Unable to parse markup [type=CF_MATHJAX].
- Иначе, добавляем <p>Unable to parse markup [type=CF_MATHJAX].
- Новый массив — ответ.
Задача С
Идея решения: Рассмотрим ситуации, когда решение невозможно:
- <p>Unable to parse markup [type=CF_MATHJAX] четное, а <p>Unable to parse markup [type=CF_MATHJAX] нечетное.
- Даже если разделить <p>Unable to parse markup [type=CF_MATHJAX] на его делитель, <p>Unable to parse markup [type=CF_MATHJAX] останется нечетным, а <p>Unable to parse markup [type=CF_MATHJAX] четное — сумма <p>Unable to parse markup [type=CF_MATHJAX] никогда не станет четной.
- <p>Unable to parse markup [type=CF_MATHJAX] нечетное, <p>Unable to parse markup [type=CF_MATHJAX] четное, но <p>Unable to parse markup [type=CF_MATHJAX] нечетное.
- Любой делитель <p>Unable to parse markup [type=CF_MATHJAX], умножая <p>Unable to parse markup [type=CF_MATHJAX], даст четное число, но при этом сумма не получится четной.
Иначе:
- Если оба числа нечетные — берем делитель <p>Unable to parse markup [type=CF_MATHJAX], <p>Unable to parse markup [type=CF_MATHJAX].
- Иначе — берем <p>Unable to parse markup [type=CF_MATHJAX], чтобы получить максимальную четную сумму.
Задача Д
Идея решения: Проверим, когда ответ невозможен:
- Если <p>Unable to parse markup [type=CF_MATHJAX] и <p>Unable to parse markup [type=CF_MATHJAX] не делится на <p>Unable to parse markup [type=CF_MATHJAX], то корректного расположения нет.
Иначе, решение всегда существует:
- Группируем одинаковые числа.
- Ставим их на место соответствующего числа.
- Если <p>Unable to parse markup [type=CF_MATHJAX], начинаем с начального числа <p>Unable to parse markup [type=CF_MATHJAX], кладем <p>Unable to parse markup [type=CF_MATHJAX] раз, затем обновляем <p>Unable to parse markup [type=CF_MATHJAX] и продолжаем.
Задача Е
Идея решения: Наблюдение: после трёх операций массив стабилизируется.
Пример:
[0,2,1,2,3,8] -> [0,4,1,4,3,4] -> [0,2,1,2,2,2] -> [0,3,1,3,3,3] -> [0,2,1,2,2,2]
- После третьей операции массив больше не меняется.
- Тогда достаточно посчитать суммы после 1-й, 2-й и 3-й операций.
Вывод:
- Если <p>Unable to parse markup [type=CF_MATHJAX] — берем сумму после первой операции.
- Если <p>Unable to parse markup [type=CF_MATHJAX] четное — берем сумму после второй операции.
- Иначе — берем сумму после третьей операции.



