Задание 5 ЕГЭ: посимвольные преобразования чисел в n-ичных системах

Подтемы

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

Задание 5 проверяет умение анализировать алгоритм, заданный словесно, который берёт натуральное число NN, переводит его в некоторую систему счисления (обычно двоичную или троичную, иногда работает прямо с десятичными цифрами), выполняет над цифрами простое преобразование и получает новое число RR. Нужно либо промоделировать алгоритм для конкретного NN, либо, наоборот, восстановить NN по известному RR и дополнительным условиям (минимальное/максимальное значение, ограничение на диапазон). Проверяется не программирование, а точное понимание позиционной записи числа и умение выразить шаги алгоритма формулами.

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

Типичная формулировка: «Алгоритм получает на вход натуральное число NN и строит по нему новое число RR: 1) переводит NN в систему с основанием nn; 2) выполняет посимвольное преобразование цифр (замена, дополнение, дописывание); 3) переводит результат обратно в десятичную систему; 4) иногда добавляется финальный шаг — разность, сумма или сравнение с исходным числом». Дальше задаётся вопрос: найдите наибольшее/наименьшее NN или RR, удовлетворяющее условию (например, не превышающее данное число, или дающее конкретный результат).

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

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

  • Позиционная запись числа в системе с основанием nn: N=∑i=0k−1ainiN = \sum_{i=0}^{k-1} a_i n^i, где ai∈{0,1,…,n−1}a_i \in \{0,1,\dots,n-1\}, ak−1≠0a_{k-1}\neq 0.
  • Число цифр kk представления NN в основании nn определяется условием nk−1≤N≤nk−1n^{k-1} \le N \le n^k-1.
  • Перевод из десятичной системы в систему с основанием nn — последовательное деление на nn с выписыванием остатков от последнего к первому.
  • Дополнение цифры в системе с основанием nn: замена aia_i на (n−1)−ai(n-1)-a_i. Для троичной системы это замена 0↔20\leftrightarrow 2, единица остаётся на месте.
  • Если у числа с kk цифрами в основании nn заменить каждую цифру aia_i на (n−1)−ai(n-1)-a_i, то новое число (посчитанное с той же длиной kk, даже если появляются ведущие нули) равно M=(nk−1)−NM = (n^{k}-1) - N. Удаление ведущих нулей не меняет численного значения MM, меняется только запись.
  • Дописывание к записи числа NN (длина kk цифр) блока из mm цифр со значением vv равносильно операции R=N⋅nm+vR = N\cdot n^{m} + v.
  • Для двоичного случая (n=2n=2) дополнение цифры — это инверсия бита: ai→1−aia_i \to 1-a_i, а формула дополнения принимает вид M=(2k−1)−NM = (2^k - 1) - N, что совпадает с побитовым «НЕ» числа NN в пределах kk разрядов.
  • Для задач, где преобразование идёт по десятичным цифрам «окнами» (например, тройки соседних цифр), нужно помнить: для числа из dd цифр при окне длины mm получается d−m+1d-m+1 окон.

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

1. Формульный метод через основание и длину числа. Вместо ручного перевода каждого конкретного числа выражаем результат алгоритма как формулу от NN и числа цифр kk. Это ключевой приём для задач «замена цифр по правилу дополнения», где R=∣2N−(nk−1)∣R=|2N-(n^k-1)|.

2. Метод перебора по остатку/разряду. Когда правило преобразования зависит от остатка от деления NN на небольшое число (например, «если кратно 3», «если не кратно»), удобно разбить задачу на случаи по значению остатка и в каждом случае вывести отдельную формулу для RR, а затем сравнить максимумы.

Мини-пример: если по правилу для чётных NN дописывается цифра 0, а для нечётных — цифра 1, то R=2NR=2N либо R=2N+1R=2N+1 соответственно — из двух формул выбираем нужный случай по чётности.

3. Метод скользящего окна по цифрам. Для задач, где рассматриваются подряд идущие группы цифр десятичной записи (например, тройки), удобно обозначить цифры как d1d2…dkd_1d_2\dots d_k и выразить каждое окно как трёхзначное число: 100di+10di+1+di+2100d_i+10d_{i+1}+d_{i+2}. Разность между окнами превращается в линейное уравнение относительно цифр.

4. Метод обратного построения (от RR к NN). Составляем уравнение R=f(N,k)R = f(N,k) и решаем его в целых цифрах с учётом ограничений 0≤ai≤n−10\le a_i\le n-1, а также условия, что число реально имеет длину kk (то есть старшая цифра не равна нулю, либо явное неравенство nk−1≤N≤nk−1n^{k-1}\le N\le n^k-1). Перебираем kk от меньших значений к большим, ищем допустимое решение.

5. Битовый метод для двоичных преобразований. Если преобразование — инверсия каждого бита в записи длиной kk, результат до сложения с исходным числом равен 2k−1−N2^k-1-N; если алгоритм затем складывает или вычитает результат с NN, сумма всегда равна 2k−12^k-1, а разность равна ∣2N−(2k−1)∣|2N-(2^k-1)| — та же логика, что в троичном случае, но с основанием 2.

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

  1. Определить основание системы nn, в которой строится запись числа (двоичная, троичная, десятичная «по цифрам»).
  2. Расписать шаг преобразования как операцию над отдельной цифрой или как операцию над группой цифр (окно, дописывание, дополнение).
  3. Найти длину kk представления NN в этой системе как функцию от диапазона значений NN (через неравенство nk−1≤N≤nk−1n^{k-1}\le N\le n^k-1).
  4. Вывести формулу R(N,k)R(N,k), отражающую весь алгоритм целиком (включая финальные операции — разность, сумму, сравнение).
  5. Если требуется найти NN по известному RR — составить уравнение R=f(N,k)R=f(N,k), решить относительно NN при разных kk, начиная с наименьших, и на каждом шаге проверять, что найденное NN действительно попадает в диапазон, соответствующий выбранному kk.
  6. Если требуется найти максимум/минимум RR (или NN) при ограничении — рассмотреть все случаи алгоритма, вывести формулу для каждого случая, найти границы допустимых NN внутри случая и выбрать оптимальное значение.
  7. Перевести финальный результат в десятичную систему, если ответ требуется именно в ней, и сверить его подстановкой в исходное словесное описание алгоритма.

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

Пример 1

Условие: строим троичную запись NN; если NN кратно 3 — дописываем к записи её последние две троичные цифры; если не кратно — остаток от деления умножаем на 5, переводим в троичную систему и дописываем. Нужно найти максимальное R≤173R\le173.

Случай NN кратно 3. Последняя троичная цифра такого числа всегда равна 0, а предпоследняя — произвольная цифра 0,1,20,1,2. Дописывание двух последних цифр равносильно операции R=9N+vR=9N+v, где v∈{0,3,6}v\in\{0,3,6\} в зависимости от N mod 9N \bmod 9: v=0v=0 при N≡0 (9)N\equiv0\ (9), v=3v=3 при N≡3 (9)N\equiv3\ (9), v=6v=6 при N≡6 (9)N\equiv6\ (9).

Максимизируем R≤173R\le173 по подслучаям: при v=6v=6 (N≡6N\equiv6) наибольшее N=15N=15, R=141R=141; при v=3v=3 (N≡3N\equiv3) наибольшее N=12N=12, R=111R=111; при v=0v=0 (N≡0N\equiv0) наибольшее N=18N=18 (так как 9⋅18=162≤1739\cdot18=162\le173, а 9⋅27=243>1739\cdot27=243>173), тогда R=162R=162.

Случай NN не кратно 3. Остаток r=1r=1: 510=1235_{10}=12_3 — 2 цифры, R=9N+5R=9N+5, нужно N≡1 (3)N\equiv1\ (3), максимум даёт N=16N=16, R=149R=149. Остаток r=2r=2: 1010=101310_{10}=101_3 — 3 цифры, R=27N+10R=27N+10, нужно N≡2 (3)N\equiv2\ (3), максимум даёт N=5N=5, R=145R=145.

Сравнивая значения 141,111,162,149,145141,111,162,149,145, наибольшее — R=162R=162, что и является ответом.

Пример 2

Условие: в десятичной записи NN рассматриваются все тройки соседних цифр как трёхзначные числа, среди них ищутся максимум и минимум, результат — их разность. Найти наименьшее N≥100N\ge100, дающее R=415R=415.

Для минимизации NN выгодно взять наименьшее возможное количество цифр. При трёх цифрах есть только одно окно, разность равна 0 — не подходит. Берём четыре цифры N=abcd‾N=\overline{abcd}, тогда есть два окна: abc‾\overline{abc} и bcd‾\overline{bcd}, разность между ними abc‾−bcd‾=100a−90b−9c−d\overline{abc}-\overline{bcd}=100a-90b-9c-d.

Рассматриваем оба знака. Если abc‾\overline{abc} больше: 100a−90b−9c−d=415100a-90b-9c-d=415; при малых aa левая часть не достигает 415, первое подходящее значение a=5a=5 даёт N=5094N=5094.

Если bcd‾\overline{bcd} больше: 90b+9c+d=415+100a90b+9c+d=415+100a. При a=1a=1 нужно 90b+9c+d=51590b+9c+d=515; так как 9c+d≤909c+d\le90, требуется b≥5b\ge5; при b=5b=5 получаем 9c+d=659c+d=65, единственное решение c=7, d=2c=7,\,d=2. Число N=1572N=1572.

Так как 1572<50941572<5094, а бо́льшие aa во втором случае дают ещё бо́льшие числа, минимальным решением среди четырёхзначных чисел оказывается N=1572N=1572; пятизначные числа заведомо больше. Ответ: N=1572N=1572.

Пример 3

Условие: строится троичная запись NN, цифры 00 и 22 меняются местами, ведущие нули убираются, результат переводится в десятичную систему, итог — модуль разности NN и полученного числа. Найти наименьшее NN, дающее R=1 864 246R=1\,864\,246.

Пусть kk — количество троичных цифр числа NN, то есть 3k−1≤N≤3k−13^{k-1}\le N\le 3^k-1. Замена 0↔20\leftrightarrow2 во всех kk цифрах равносильна формуле дополнения M=(3k−1)−NM=(3^k-1)-N — удаление ведущих нулей не меняет численного значения MM. Тогда R=∣N−M∣=∣2N−(3k−1)∣R=|N-M|=|2N-(3^k-1)|.

Проверка на примере из условия: N=35=10223N=35=1022_3, k=4k=4, 34−1=803^4-1=80, ∣2⋅35−80∣=10|2\cdot35-80|=10 — совпадает.

Решаем ∣2N−(3k−1)∣=1 864 246|2N-(3^k-1)|=1\,864\,246, перебирая kk от малых значений. При k≤13k\le13 (313−1=1 594 3223^{13}-1=1\,594\,322) решений, удовлетворяющих диапазону длины, нет. При k=14k=14 (314−1=4 782 9683^{14}-1=4\,782\,968): N=4 782 968+1 864 2462=3 323 607N=\dfrac{4\,782\,968+1\,864\,246}{2}=3\,323\,607, что лежит в диапазоне [313, 314−1][3^{13},\,3^{14}-1] — подходит. Второй вариант при k=14k=14 даёт 1 459 361<3131\,459\,361 < 3^{13}, то есть относится к другой длине и не подходит. При k≥15k\ge15 значения только возрастают. Минимальное подходящее число — N=3 323 607N=3\,323\,607.

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

  • Путают удаление ведущих нулей с изменением численного значения — на самом деле оно не меняется, меняется только длина записи.
  • Забывают проверить, что найденное решение NN действительно имеет ту длину kk, которая использовалась при выводе формулы; без этой проверки можно получить «лишний» корень, не удовлетворяющий условию.
  • В задачах с остатком от деления путают, какая операция применяется к остатку, а какая — к самому числу.
  • В задачах со скользящим окном забывают, что число окон равно (число цифр − длина окна + 1), и упускают одно из окон на краю записи.
  • Рассматривают только один знак модуля или только один порядок операндов в разности, теряя часть решений.
  • Допускают арифметические ошибки при переводе чисел в другую систему счисления вручную — стоит проверять перевод контрольной подстановкой обратно по формуле ∑aini\sum a_i n^i.
  • При поиске минимального/максимального значения перебирают варианты не по возрастанию длины числа, из-за чего пропускают более выгодный ответ, лежащий при другой длине.

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

  • Довести до автоматизма перевод чисел между десятичной и системами с основаниями 2, 3, 8, 16 — как в прямом, так и в обратном направлении, без калькулятора.
  • Для каждой новой задачи сначала записывать общую формулу R(N,k)R(N,k) через основание системы и длину числа, а не сразу подбирать конкретные числа — это резко снижает число ошибок.
  • Отдельно тренировать формулу дополнения M=(nk−1)−NM=(n^k-1)-N и её частные случаи для n=2n=2 и n=3n=3, так как она встречается в большинстве вариантов на эту подтему.
  • Прорешать подряд несколько задач банка заданий с разными правилами «дописывания» цифр, чтобы наработать навык быстрого перехода от словесного описания к формуле.
  • После получения ответа обязательно подставлять найденное число в исходный алгоритм «вручную» и проверять, что результат совпадает с условием — это главный способ отловить ошибку в диапазоне длины kk.
  • Заучить степени 2 и 3 хотя бы до пятнадцатого-двадцатого порядка — это экономит время на экзамене при переборе значений kk.

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

Как быстро определить, сколько цифр займёт число N в системе с основанием n?

Нужно найти k из неравенства nk−1≤N≤nk−1n^{k-1}\le N\le n^k-1, то есть k — это округлённый вверх логарифм N по основанию n плюс единица; проще последовательно сравнивать N со степенями n.

Меняется ли численное значение числа, если после замены цифр убрать ведущие нули?

Нет, значение не меняется — ведущие нули не влияют на величину числа, они влияют только на его формальную запись и видимую длину.

Как определить количество окон в задаче со скользящим окном по цифрам?

Если число содержит d цифр, а окно состоит из m цифр, то количество окон равно d-m+1; например, для 5-значного числа и окна из 3 цифр получится 3 окна.

Можно ли решать такие задачи прямым перебором чисел без вывода формул?

Для небольших диапазонов N это возможно, но при больших искомых значениях R или N перебор занимает слишком много времени, поэтому надёжнее сразу выводить формулу R(N,k).

Какая ошибка чаще всего приводит к неверному ответу в задачах на восстановление N по R?

Чаще всего забывают проверить, что найденное N действительно имеет ту длину k, для которой была выведена формула — без этой проверки можно принять посторонний корень.

Нужно ли уметь программировать, чтобы решать задание 5?

Нет, задание проверяет умение формализовать алгоритм математически, а не написать код; достаточно грамотно работать с формулами позиционных систем счисления.

Как проверить правильность найденного ответа перед тем, как его записать?

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