Задание №14 ЕГЭ по информатике: разбор, шаблоны кода Python и анти-примеры | СмартКИМ
СмартКИМ УДОБНАЯ ПОДГОТОВКА К ЕГЭ И ОГЭ
Задачи №14 Решать в тренажере Войти в СмартКИМ
ЕГЭ (1–27) ОГЭ (1–15) Python: шпаргалка
Быстрый переход по номерам и темам
Базовый (1 балл) Время: 2-4 мин Python int(s, base) Деление с остатком Все задачи №14 в каталоге

Задание №14. Системы счисления: огромные числа и неизвестные цифры

Тема: Перевод в любую систему, int(s, base), поиск цифры x, подсчёт цифр в записи
Два типа: посчитать, сколько каких цифр в записи огромного числа, или подобрать неизвестную цифру x, чтобы выполнялось условие. Python справляется с любыми степенями, а перевод делается циклом деления.

Что от тебя хотят

В условии либо огромное выражение вроде 7292021 − 2·272024 − 6561, у которого надо посчитать цифры в записи по какому-то основанию, либо запись числа с «дыркой»: 98897x21 в системе по основанию 19. Для «дырки» надо найти все x, при которых что-то выполняется (например, число делится на 18).

Два инструмента

ЗадачаИнструмент
Из строки с цифрами в числоint("12A45", 19)
Из числа в запись по основаниюцикл: s = str(n % base) + s, затем n = n // base

int(строка, основание) понимает любые основания от 2 до 36. Цифры выше 9 это буквы: A = 10, B = 11, и так далее. Поэтому для основания 19 последняя цифра это I (18).

Python умеет огромные числа: 21872020 считается мгновенно, ничего «не переполняется». Не нужно придумывать формулы там, где достаточно подставить.

Разбор 1: считаем цифры

Значение выражения 2·21872020 + 7292021 − 2·2432022 + 812023 − 2·272024 − 6561 записали в системе счисления с основанием 27. Сколько в этой записи цифр, числовое значение которых больше 9?

Первое окно считает значение и идёт по его цифрам в 27-ричной записи: остаток от деления на 27 это последняя цифра, целая часть от деления отрезает её. Строку собирать не нужно, цифры выше 9 строкой всё равно не записать, поэтому сразу сравниваем остаток с 9. Ответ: 3367. Это задача из демоверсии 2026 года.

Разбор 2: ищем цифру x

В системе счисления по основанию 19 заданы числа 98897x21 и 2x923, где x это ненулевая цифра. Найдите наибольшее x, при котором сумма чисел делится на 18, и укажите частное от деления этой суммы на 18.

Перебираем x от 1 до 18 (ноль запрещён условием). Для каждого собираем строку и переводим int(..., 19). Если сумма делится на 18, запоминаем частное: последнее запомненное будет для наибольшего x. Ответ 469034148, это задача из демоверсии 2025 года.

Цифра x берётся из основания. В системе по основанию 19 цифры от 0 до 18, то есть 19 значений. Перебор range(20) даст запись, которой не существует.

Разновидности и прототипы задания на экзамене

Тип 1: Сколько цифр в записи числа
Значение выражения со степенями. Переводим в нужную систему и считаем нужные цифры.
Тип 2: Подбор цифры x
В записи числа есть неизвестная цифра. Перебираем её от 0 до основания минус 1.
Тип 3: Две неизвестные
Две цифры x и y. Перебор вложенным циклом.

Код решения на Python

Запустить код в онлайн-песочнице
int(s, base)value % 27value // 27s = str(...) + scount += 1digits[x]
Считаем цифры больше 9 в записи по основанию 27
value = 2 * 2187 ** 2020 + 729 ** 2021 - 2 * 243 ** 2022 + 81 ** 2023 - 2 * 27 ** 2024 - 6561

count = 0
while value > 0:
    if value % 27 > 9:
        count += 1
    value = value // 27

print(count)
Ищем наибольшее x и частное
digits = "0123456789ABCDEFGHI"

for x in range(1, 19):
    a = int("98897" + digits[x] + "21", 19)
    b = int("2" + digits[x] + "923", 19)
    total = a + b
    if total % 18 == 0:
        answer = total // 18

print(answer)

Типичные ошибки

✕ Не так
Перебирать x за пределами основания
Для основания 15 нельзя брать x = 20: такой цифры нет.
✓ Так
Перебирать range(base): от 0 до base - 1.
✕ Не так
Дописывать цифру справа при переводе
Остатки при делении идут от младшей цифры к старшей.
✓ Так
Приписывать слева: s = str(value % base) + s.
✕ Не так
Переводить число буквами вручную
Для цифр выше 9 легко ошибиться: A, B, C...
✓ Так
Брать цифру из строки digits[x] или отдать всё int(строка, основание).
ГРОБ

ГРОБ №14: Две неизвестные цифры

В записи числа две дырки: x и y. Одним циклом их не перебрать.

Как обойти
Вложенные циклы: for x in range(base): и внутри for y in range(base):. Для основания 19 это 361 вариант, мгновенно.

Лайфхаки на экзамене

  1. int("12A45", 19) работает для любых оснований от 2 до 36. Для оснований больше 10 цифры-буквы пиши заглавными.
  2. Для основания, равного степени двойки (2, 4, 8, 16), цифры можно получить прямо из двоичной записи, но проще перевести циклом.
  3. Если нужно «наименьшее x», останавливайся на первом подходящем (break). Если «наибольшее», просто не останавливайся и запоминай последнее.
Банк реальных задач №14 Открыть в тренажере СмартКИМ