Задание 5 ОГЭ: получение большего числа из меньшего и обратно у формального исполнителя

Подтемы

Что проверяет задание

Задание 5 проверяет умение работать с простым линейным алгоритмом для формального исполнителя — программой без циклов, без ветвлений и без повторных обращений к одной и той же команде «сразу пачкой». Исполнитель умеет выполнять всего две операции: увеличивать число на экране на фиксированную величину и умножать его на некоторое число bb. Программа — это просто запись подряд номеров команд, например 11211, и каждая цифра означает одно применение соответствующей команды строго по порядку слева направо.

В большинстве вариантов задания требуется не «прогнать» программу вперёд (это было бы слишком просто), а решить обратную задачу: известно, с какого числа начали и во что оно превратилось после выполнения программы, а неизвестен параметр bb одной из команд. Нужно составить уравнение и найти это bb. Отсюда и две связанные подтемы — «получение большего числа из меньшего» (когда обе команды увеличивают число, и требуется подобрать множитель, чтобы дойти до нужного большого значения) и «получение меньшего числа из большего» (та же логика, но встречается и в задачах с делением или уменьшением — общий принцип решения одинаков: линейная функция от bb, приравненная к известному результату).

Как выглядит формулировка и сколько баллов

Типовая формулировка звучит так: у исполнителя (Альфа, Бета, Гамма и т. п.) есть две команды с номерами 1 и 2. Команда 1 — «прибавь aa» (число aa конкретное: 1, 2, 3 и так далее), команда 2 — «умножь на bb», где bb — неизвестное натуральное число, b≥2b \ge 2. Программа записана как последовательность цифр, например 12111 или 11211. Дано, что при выполнении этой программы конкретное число (например, 6 или 7) переходит в другое конкретное число (например, 82 или 51). Требуется найти значение bb.

Задание относится к базовому уровню сложности, ответом служит одно число, вводимое в поле без пробелов и лишних символов. За верное решение даётся 1 балл. Никаких промежуточных записей проверять не требуется — оценивается только итоговое число, поэтому важно не допустить арифметической ошибки при вычислении.

Что нужно знать

  • Линейный алгоритм — последовательность команд, которые выполняются одна за другой строго в порядке их записи, без пропусков, повторов и условных переходов.
  • Команда «прибавь aa» переводит число xx в число x+ax+a: x→x+ax \to x+a.
  • Команда «умножь на bb» переводит число xx в число x⋅bx \cdot b: x→x⋅bx \to x \cdot b.
  • Программа записывается как строка цифр-номеров команд; например, запись 11211 означает выполнение команд в порядке: 1, 1, 2, 1, 1.
  • Применение программы к числу — это композиция функций: результат каждого шага становится входным значением для следующего шага.
  • По условию задачи bb — натуральное число и b≥2b \ge 2 (единица не подходит, так как умножение на 1 не меняет число, что обычно противоречит смыслу задачи).
  • После разбора программы получается уравнение вида k⋅b+m=Nk \cdot b + m = N, где kk и mm — числа, найденные из последовательности команд, а NN — известный конечный результат. Уравнение решается стандартно: b=N−mkb = \dfrac{N-m}{k}.
  • Обратная операция для «прибавь aa» — «вычти aa» (x→x−ax \to x-a), для «умножь на bb» — «раздели на bb» (x→x/bx \to x/b); эти обратные операции полезны при движении от конца программы к началу.

Методы решения

Метод 1. Прямой прогон программы с переменной bb. Берём начальное число, применяем команды по порядку, при этом там, где встречается умножение, просто пишем множитель bb рядом, не вычисляя его. В итоге получаем выражение вида k⋅b+mk \cdot b + m. Мини-пример: программа 12 (команда 1 — «+2», команда 2 — «умножь на bb»), начальное число 5. Шаг 1: 5+2=75+2=7. Шаг 2: 7⋅b=7b7 \cdot b = 7b. Если известно, что итог равен 21, получаем уравнение 7b=217b=21, откуда b=3b=3.

Метод 2. Таблица промежуточных значений. Удобен, если команд много и легко запутаться. Строим таблицу: номер шага — команда — выражение. Каждая новая строка получается из предыдущей применением очередной команды. Такой способ снижает риск пропустить шаг или перепутать порядок операций.

Метод 3. Обратный ход (от результата к началу). Если неизвестно не bb, а начальное число, движемся от конечного результата назад, применяя обратные операции в обратном порядке команд. Мини-пример: программа 21 (команда 2 — «умножь на 3», команда 1 — «+4»), результат равен 19. Идём назад: последней была команда 1, значит перед ней было 19−4=1519-4=15; перед этим была команда 2 (умножение на 3), значит до неё было 15/3=515/3=5. Значит, начальное число — 5.

Метод 4. Составление и решение линейного уравнения. После того как получено выражение вида k⋅b+mk\cdot b+m, просто решаем уравнение k⋅b+m=Nk\cdot b+m=N относительно bb: b=N−mkb=\dfrac{N-m}{k}. Обязательно проверяем, что получившееся значение — натуральное число и не меньше 2, иначе где-то допущена ошибка.

Метод 5. Проверка подбором (контрольный метод). После нахождения bb полезно подставить найденное значение в программу и прогнать её заново от начала до конца, чтобы убедиться, что действительно получается заданное конечное число. Это не основной способ решения, но обязательный шаг самоконтроля.

Алгоритм решения по шагам

  1. Выписать, что означает команда 1 и что означает команда 2 (какое число прибавляется, что множитель — неизвестное bb).
  2. Прочитать программу как последовательность цифр и определить порядок выполнения команд слева направо.
  3. Взять исходное число и последовательно применять к нему команды, при умножении оставляя буквенный множитель bb, не пытаясь его сразу вычислить.
  4. После прогона всей программы получить итоговое выражение в виде k⋅b+mk\cdot b+m (число kk показывает, во сколько раз множитель bb участвует в итоговом коэффициенте, mm — накопленное слагаемое).
  5. Составить уравнение: полученное выражение равно заданному конечному числу.
  6. Решить уравнение относительно bb.
  7. Проверить, что bb — натуральное число и b≥2b\ge2; если условие не выполняется, пересчитать шаги 3–4, скорее всего, ошибка в порядке команд или в арифметике.
  8. Сделать проверку: подставить найденное bb в программу и убедиться, что результат совпадает с данным в условии числом.

Разбор примеров

Пример 1. У исполнителя Альфа команда 1 — «прибавь 1», команда 2 — «умножь на bb» (b≥2b\ge2, натуральное). Программа 11211 переводит число 6 в число 82. Найти bb.

Разбираем программу по цифрам: 1, 1, 2, 1, 1 — пять шагов.

Шаг 1 (команда 1, +1): 6+1=76+1=7. Шаг 2 (команда 1, +1): 7+1=87+1=8. Шаг 3 (команда 2, умножение на bb): 8⋅b=8b8\cdot b=8b. Шаг 4 (команда 1, +1): 8b+18b+1. Шаг 5 (команда 1, +1): 8b+1+1=8b+28b+1+1=8b+2.

Итоговое выражение: 8b+28b+2. По условию оно равно 82: 8b+2=82.8b+2=82. Решаем: 8b=808b=80, значит b=10b=10.

Проверка условия: b=10b=10 — натуральное число, 10≥210\ge2 — условие выполняется. Проверим прогоном: 6→7→8→80→81→826\to7\to8\to80\to81\to82 — всё совпадает. Ответ: b=10b=10.

Пример 2. У исполнителя Бета команда 1 — «прибавь 2», команда 2 — «умножь на bb». Программа 12111 переводит число 7 в число 51. Найти bb.

Порядок команд: 1, 2, 1, 1, 1 — пять шагов.

Шаг 1 (команда 1, +2): 7+2=97+2=9. Шаг 2 (команда 2, умножение на bb): 9⋅b=9b9\cdot b=9b. Шаг 3 (команда 1, +2): 9b+29b+2. Шаг 4 (команда 1, +2): 9b+2+2=9b+49b+2+2=9b+4. Шаг 5 (команда 1, +2): 9b+4+2=9b+69b+4+2=9b+6.

Итоговое выражение: 9b+69b+6. По условию равно 51: 9b+6=51.9b+6=51. Решаем: 9b=459b=45, значит b=5b=5.

Проверка: b=5b=5 — натуральное число, 5≥25\ge2, условие выполнено. Прогон: 7→9→45→47→49→517\to9\to45\to47\to49\to51 — совпадает. Ответ: b=5b=5.

Пример 3. У исполнителя Гамма команда 1 — «прибавь 3», команда 2 — «умножь на bb». Программа 11211 переводит число 1 в число 97. Найти bb.

Порядок команд: 1, 1, 2, 1, 1 — пять шагов.

Шаг 1 (команда 1, +3): 1+3=41+3=4. Шаг 2 (команда 1, +3): 4+3=74+3=7. Шаг 3 (команда 2, умножение на bb): 7⋅b=7b7\cdot b=7b. Шаг 4 (команда 1, +3): 7b+37b+3. Шаг 5 (команда 1, +3): 7b+3+3=7b+67b+3+3=7b+6.

Итоговое выражение: 7b+67b+6. По условию равно 97: 7b+6=97.7b+6=97. Решаем: 7b=917b=91, значит b=13b=13.

Проверка: b=13b=13 — натуральное число, 13≥213\ge2, условие выполнено. Прогон: 1→4→7→91→94→971\to4\to7\to91\to94\to97 — совпадает. Ответ: b=13b=13.

Во всех трёх примерах видно общую закономерность: сначала последовательно выполняются команды сложения, накапливая некоторое число до момента умножения, затем происходит умножение на bb, а затем снова прибавляются известные слагаемые. Итоговое выражение всегда линейно относительно bb, поэтому уравнение решается элементарно — важно только аккуратно посчитать коэффициент при bb (то есть значение, накопленное перед умножением) и свободное слагаемое (то, что прибавилось после умножения).

Типичные ошибки и ловушки

  • Перепутан порядок выполнения команд. Программа читается строго слева направо, но иногда её по ошибке читают справа налево или переставляют шаги местами — это сразу даёт неверный коэффициент при bb.
  • Умножение применяется не ко всему накопленному числу. Частая ошибка — умножать на bb только исходное число, забывая, что до умножения уже были выполнены другие команды и число успело измениться.
  • Ошибка при раскрытии умножения суммы. Если умножение стоит не первым шагом, а после нескольких прибавлений, важно умножить на bb именно то число, которое накопилось к этому моменту, а не исходное.
  • Неверный подсчёт числа повторений команды после умножения. После того как в выражении появился bb, к нему по инерции продолжают прибавлять слагаемые — легко забыть или, наоборот, добавить лишний шаг.
  • Пропуск проверки условия b≥2b\ge2 и натуральности. Если в результате решения уравнения получилось дробное число или b<2b<2, значит где-то допущена ошибка в разборе программы — нужно пересчитать шаги, а не подгонять ответ.
  • Путаница между командой 1 и командой 2. В разных вариантах номера команд могут отличаться по смыслу (иногда команда 1 — умножение, а команда 2 — сложение), поэтому важно каждый раз внимательно читать условие, а не действовать по шаблону из предыдущей задачи.
  • Ошибки в самой арифметике при переносе слагаемых через знак равенства в конечном уравнении — стоит выполнять вычисления по шагам, не срезая их в голове.

Как готовиться

Лучший способ подготовки — самому расписывать программу по шагам в виде таблицы, отдельно фиксируя, какая команда выполняется и что происходит с выражением. Стоит решить подряд десять-пятнадцать задач такого типа с разными программами (разное число повторений команд, разное расположение умножения — в начале, середине или конце последовательности), чтобы натренировать быстрый и безошибочный разбор.

Полезно также решать задачи в обратную сторону: по данной программе и неизвестному начальному числу восстанавливать его, применяя обратные операции от конца к началу. Это укрепляет понимание того, что каждая команда — это функция, а программа — их последовательная композиция, и помогает быстрее ориентироваться, если в задании поменяют, что именно неизвестно — множитель, начальное число или слагаемое в команде.

При тренировке обязательно проверяйте себя прогоном программы с найденным значением bb от начала до конца: если конечное число совпало с тем, что дано в условии, ответ верный. Такая привычка экономит баллы на реальном экзамене, где ошибка на одном шаге легко разрушает весь ответ, а времени на пересчёт может не хватить.

Частые вопросы

Может ли b быть равным 1?

Нет, по условию задания b — натуральное число, и почти всегда указано ограничение b ≥ 2, потому что умножение на 1 не меняет число и не имеет смысла как отдельная команда.

Что делать, если при решении уравнения b получилось дробным?

Это сигнал ошибки. Нужно вернуться к разбору программы и проверить, правильно ли посчитан порядок команд, коэффициент перед b и свободное слагаемое после умножения.

Как быстро понять, сколько раз в программе встречается каждая команда?

Достаточно посчитать количество цифр 1 и цифр 2 в записи программы, но важно не просто посчитать количество, а применять их строго в том порядке, в котором они записаны.

Нужно ли всегда получать выражение вида k·b + m?

Да, если в программе только одно умножение на b, итоговое выражение всегда линейно относительно b. Если умножений несколько, выражение будет содержать более высокую степень b, но принцип решения такой же — составить уравнение и решить его.

Как проверить правильность найденного значения b?

Нужно подставить найденное b в программу и последовательно прогнать её от начального числа, шаг за шагом применяя команды, и убедиться, что итоговое число совпадает с тем, что указано в условии.

Что если в программе умножение стоит первым шагом?

Тогда сразу на первом шаге начальное число умножается на b, а все последующие слагаемые прибавляются уже к этому произведению — порядок решения остаётся тем же, просто коэффициент k совпадает с исходным числом.

Отличается ли решение для получения меньшего числа из большего?

Принцип составления уравнения одинаковый: линейная зависимость итогового числа от b. Разница лишь в том, что при движении к меньшему числу чаще используют обратные операции (вычитание, деление) при разборе программы от конца к началу.