🧠 Задание 13 ЕГЭ: два способа решить одну задачу — арифметика vs строки
Сегодня разберём задание 13 про исполнителя с командами «Прибавь 1» и «Поменяй местами». Именно это задание было на ЕГЭ 2026 и понизило процент решаемости этой задачи.
Задача: посчитать, сколько программ превращают 111 в 165.
У этой задачи есть как минимум два рабочих решения: одно опирается на целочисленную арифметику, другое — на работу со строками. Оба дают правильный ответ, но по-разному «чувствуются» при объяснении и разборе с учениками. Давайте сравним их именно с точки зрения простоты понимания и удобства применения на уроке и на экзамене.
🔹 Решение 1: целочисленная арифметика
Здесь мы работаем с числом как с математическим объектом: чтобы достать десятки и единицы, используем деление и остаток от деления:
d = a // 10 % 10 — цифра в разряде десятков
e = a % 10 — цифра в разряде единиц
А чтобы поменять их местами, собираем новое число: a // 100 * 100 + e * 10 + d.
Плюсы для учеников:
✅ Укрепляет понимание разрядов. Это не «магия строк», а чистая математика: сотни, десятки, единицы. Для тех, кто привык к задачам на системы счисления и кодирование, такой подход логичнее.
✅ Быстрее на больших тестах. Операции с числами обычно эффективнее, чем конвертация в строку и обратно.
✅ Меньше скрытых ошибок. Нет риска ошибиться с индексами или случайно обрезать лишние символы.
Минусы:
❌ Чуть сложнее «прочитать» логику. Формулы вида a // 100 * 100 могут пугать новичков: нужно отдельно объяснять, зачем мы «отрезаем» сотни и потом «возвращаем» их на место.
❌ Требует аккуратной проверки граничных случаев. Если число однозначное или двузначное, формулы всё ещё работают, но ученику полезно это явно проверить.
🔹 Решение 2: работа со строками
Здесь число сначала превращаем в строку, меняем местами последние два символа, а потом обратно в число:
d = str(a)[-2], e = str(a)[-1] — берём последние два символа
int(str(a)[:-2] + e + d) — собираем новую строку и конвертируем в число
Плюсы для учеников:
✅ Очень наглядно. «Взяли последние две цифры, поменяли местами» — это буквально то, что написано в условии. Для визуалов и тех, кто любит «пощупать» данные, такой код читается как инструкция.
✅ Проще модифицировать. Если условие усложнится (например, «поменять местами цифры в разрядах сотен и десятков»), в строковом варианте это делается заменой индексов, а в арифметическом придётся заново выводить формулы.
Минусы:
❌ Лишние конвертации. Каждое обращение к функции делает str(a) и int(...), что может замедлить работу на больших ветках рекурсии.
❌ Риск ошибок с индексами. Ученики могут случайно написать [:-3] вместо [:-2] или перепутать порядок e + d и d + e.
❌ Меньше связи с математикой. Такой подход «отрывает» задачу от темы разрядов и систем счисления, а это важный блок в ЕГЭ.
💡 Что лучше рекомендовать на уроке?
Для прочного фундамента и подготовки к сложным задачам — арифметика. Она учит видеть структуру числа, а не просто «переставлять символы». Это особенно важно, если дальше вы планируете разбирать задачи на системы счисления, маски чисел и т.п.
Для быстрого старта и наглядности — строки. Если цель — показать принцип рекурсии и подсчёта путей, и ученики ещё не чувствуют себя уверенно с разрядами, строковый вариант поможет быстрее «поймать» идею.
На экзамене оба решения допустимы и будут зачтены, если код работает и укладывается в лимиты времени и памяти. Но если ученик хочет не просто «сдать», а понимать, что делает его программа, — лучше развивать арифметический подход.