ЕГЭ
Информатика
17 марта 2026
20 минут чтения

Задание 14 ЕГЭ по информатике: позиционные системы счисления

Задание 14 ЕГЭ по информатике (КЕГЭ) проверяет позиционные системы счисления — элемент содержания 2.3 кодификатора. Это задание повышенного уровня, за него дают 1 первичный балл, ответ — краткий, одно число, а файл к заданию не прилагается. В открытом банке задание встречается в двух формах: «значение выражения записали в системе с основанием p — сколько в записи цифр с таким-то свойством» и «операнды записаны в системе с основанием p, в записи есть неизвестная цифра — найдите её значение и частное от деления». Обе формы решаются без перевода в десятичную систему — достаточно понимать, как устроена позиционная запись, и уметь считать остатки. В статье — вся теория: развёрнутая запись и перевод делением, быстрые переходы между двоичной, восьмеричной и шестнадцатеричной, арифметика прямо в системе счисления, приём «занимаем разряд» для выражений вида 7n+7mk7^n + 7^m - k, признаки делимости и поиск основания системы по уравнению, а также рабочий код на Python для перебора. Дальше — три разобранных реальных задания из открытого банка ФИПИ и типичные ошибки. Потренироваться можно на реальных заданиях 14 ЕГЭ по информатике онлайн — с мгновенной проверкой ответа.


Что проверяет задание 14 ЕГЭ по информатике

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

Проверяемые умения (КЭС 2.3):

  • записывать число в развёрнутом виде и переводить между системами счисления делением с остатком и по степеням основания;
  • быстро переходить между двоичной, восьмеричной и шестнадцатеричной системами по триадам и тетрадам битов;
  • выполнять сложение и вычитание чисел прямо в системе с произвольным основанием, без перевода в десятичную;
  • анализировать запись степенных выражений вида pn±pm±p^n \pm p^m \pm \dots в системе с основанием pp, включая перенос и заём через разряды;
  • находить сумму цифр числа, остаток от деления на число вида p1p-1 или p+1p+1 и применять признаки делимости в произвольном основании;
  • находить основание позиционной системы, при котором выполняется заданное числовое равенство.

Задание 14 не требует специализированного программного обеспечения и не сопровождается файлом — все данные даны прямо в тексте условия, а на экзамене доступна среда программирования, поэтому финальную проверку всегда можно сделать в две строчки кода. Проекты КИМ-2027 ФИПИ публикует в конце августа 2026 года, но структура и содержание работы не менялись с 2025 года, поэтому все цифры ниже приведены по актуальной спецификации ФИПИ 2026 года.

ПараметрЗначение
Максимальный балл1 первичный (ответ либо полностью совпал с эталоном, либо 0)
Уровень сложностиПовышенный (П)
Форма ответаКраткая: одно число
Раздел кодификатора2. Теоретические основы информатики; КЭС 2.3
ФайлНе прилагается, все данные — в тексте условия
Специализированное ПОНе требуется
Рекомендуемое времяПримерное время выполнения задания по спецификации ФИПИ — 3 минуты
Связанные заданияЗадание 4 (кодирование и условие Фано, КЭС 2.1), задание 11 (информационный объём сообщения, КЭС 2.2, повышенный уровень), задание 15 (математическая логика, КЭС 2.7, повышенный уровень)

Тренируйтесь на реальных заданиях

Задания ЕГЭ по информатике из открытого банка ФИПИ с мгновенной проверкой ответа. Решаем, ошибаемся, разбираем — бесплатно.

Решать задание 14

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

В открытом банке ФИПИ у задания 14 есть два устойчивых семейства формулировок. Первое — «посчитайте выражение со степенями и определите свойство цифр записи»:

  • «Значение выражения 497 + 721 − 7 записали в системе счисления с основанием 7. Сколько цифр 6 содержится в этой записи?»
  • «Значение арифметического выражения 3 · 438 + 2 · 423 + 420 + 3 · 45 + 2 · 44 + 1 записали в системе счисления с основанием 16. Сколько значащих нулей содержится в этой записи?»
  • «Определите количество цифр с числовым значением, превышающим 9, в 27-ричной записи числа, заданного выражением…»

Второе семейство — «операнды даны в системе с основанием p, в записи спрятана неизвестная цифра, найдите её значение и частное от деления результата на заданное число»:

  • «Операнды арифметического выражения записаны в системе счисления с основанием 15. 123x515 + 1x23315. В записи чисел переменной x обозначена неизвестная цифра из алфавита 15-ричной системы счисления. Определите наименьшее значение x, при котором значение данного арифметического выражения кратно 14. Для найденного значения x вычислите частное от деления значения арифметического выражения на 14 и укажите его в ответе в десятичной системе счисления. Основание системы счисления в ответе указывать не нужно.»

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

Как записывается ответ. Ответ на задание 14 — это одно число, записанное в десятичной системе счисления — даже если всё условие было про систему с основанием 27 или 15. Если в задаче спрашивают частное от деления, а не саму цифру основания, в формулировке прямо пишут «основание системы счисления в ответе указывать не нужно» — это не намёк, а прямое указание не перепутывать ответ с промежуточным результатом x. Слов, единиц измерения и указаний основания (нижних индексов вида 15_{15}) в ответе быть не должно — только число.

Теория: всё, что нужно для задания 14

Развёрнутая запись, перевод и быстрые переходы

Развёрнутая запись

Число NN в системе с основанием pp, записанное цифрами dkdk1d1d0d_k d_{k-1} \dots d_1 d_0, равно сумме цифр, умноженных на степени основания:

N=dkpk+dk1pk1++d1p1+d0p0N = d_k \cdot p^k + d_{k-1} \cdot p^{k-1} + \dots + d_1 \cdot p^1 + d_0 \cdot p^0

Все цифры did_i лежат в диапазоне от 00 до p1p-1 — это и есть «алфавит» системы. Для оснований больше 10 цифры со значением 10 и выше в заданиях задания 14 почти всегда пишут как числа в скобках или через переменную, а не буквами: в 27-ричной системе цифра 20 — это просто число 20, а не отдельный символ, как «A» в шестнадцатеричной.

Перевод из системы pp в десятичную

Прямая подстановка в развёрнутую запись, обычно по схеме Горнера (умножаем накопленное значение на основание и прибавляем следующую цифру):

12315=((115+2)15+3)=258123_{15} = ((1 \cdot 15 + 2) \cdot 15 + 3) = 258

Перевод из десятичной в систему pp

Деление с остатком: делим число на pp, записываем остаток как очередную цифру (от младшей к старшей), частное снова делим — и так, пока частное не станет нулём.

258 : 15 = 17, остаток 3
 17 : 15 =  1, остаток 2
  1 : 15 =  0, остаток 1

Цифры снизу вверх: 1, 2, 3 → 258 = 123 (в системе с основанием 15)

Быстрые переходы 2 ↔ 8 ↔ 16 по триадам и тетрадам

Основания 8 и 16 — это степени двойки (8=238 = 2^3, 16=2416 = 2^4), поэтому переводить через десятичную не нужно: достаточно разбить двоичную запись на группы по 3 бита (для восьмеричной) или по 4 бита (для шестнадцатеричной), начиная с младшего разряда, и заменить каждую группу одной цифрой.

ДесятичноеДвоичноеВосьмеричноеШестнадцатеричное
0000000
1000111
2001022
3001133
4010044
5010155
6011066
7011177
81000108
91001119
10101012A
11101113B
12110014C
13110115D
14111016E
15111117F

Пример: перевести 1011110021011\,1100_2 в восьмеричную и шестнадцатеричную. Группируем по 3 бита справа налево (при нехватке битов слева дописываем нули):

10111100 → по 3 бита: 010 111 100 → 2 7 4  → 274 (восьмеричное)
10111100 → по 4 бита: 1011 1100    → B C    → BC  (шестнадцатеричное)

Тот же приём работает в обратную сторону: каждая восьмеричная цифра разворачивается ровно в 3 бита, каждая шестнадцатеричная — ровно в 4, с ведущими нулями внутри группы. На задании 14 основания чаще нестандартные (7, 15, 17, 21, 26, 27), поэтому такой короткий путь применим не всегда — но если основание оказалось степенью другого основания из условия (например, 27 = 3³, 16 = 4²), это первое, что стоит проверить: см. приём «занимаем разряд» ниже.

Арифметика в системе счисления без перевода в десятичную

Числа в задании 14 обычно настолько велики (степени с показателями в тысячи), что перевести их в десятичную систему и обратно нереально. Но складывать и вычитать числа в произвольном основании можно точно так же, как в столбик в десятичной системе — только перенос и заём происходят не через 10, а через основание pp.

Сложение с переносом

Складываем цифры справа налево. Если сумма цифр в разряде p\geq p, вычитаем pp и переносим 1 в следующий разряд — совершенно как перенос через 10 в десятичной системе.

  3 4 5
+ 2 1 6   (основание 7)
---------
разряд 0: 5 + 6 = 11 = 1·7 + 4 → пишем 4, переносим 1
разряд 1: 4 + 1 + 1(перенос) = 6 → пишем 6, переноса нет
разряд 2: 3 + 2 = 5 → пишем 5

Результат: 5 6 4  (в системе с основанием 7)

Вычитание с заёмом

Если уменьшаемая цифра меньше вычитаемой, занимаем 1 из следующего разряда — и эта единица добавляет не 10, а pp к текущему разряду.

  5 0 2
- 2 3 6   (основание 7)
---------
разряд 0: 2 − 6 < 0 → занимаем: 2 + 7 − 6 = 3, долг 1
разряд 1: 0 − 3 − 1(долг) < 0 → занимаем: 0 + 7 − 3 − 1 = 3, долг 1
разряд 2: 5 − 2 − 1(долг) = 2

Результат: 2 3 3  (в системе с основанием 7)

Это в точности то, что происходит при вычислении выражений вида pnkp^n - k в задании 14 — только вместо конкретных цифр там участвуют степени основания, и заём приходится прослеживать не по одному разряду, а сразу по цепочке одинаковых цифр. Разбор этого случая — в следующем блоке.

Приём «занимаем разряд»: выражения вида pn ± pm − k

Типовая постановка задания 14: значение выражения вида 7n+7mk7^n + 7^m - k записали в семеричной системе — сколько в записи цифр «6»? Считать выражение напрямую нельзя: показатели — тысячи. Работает другой приём — как в десятичной системе число 100007=999310\,000 - 7 = 9993 «занимает» разряды и превращает их в девятки, так и pk(малое число)p^k - (\text{малое число}) превращает разряды в цифры p1p - 1.

Правило заёма через степень основания

Если из pkp^k вычесть число, меньшее pp, результат — это цифра p1p-1, повторённая kk раз, и последняя цифра, дополняющая до pp:

pkc  =  (p1)(p1)(p1)k1 раз(pc)при 0<c<pp^k - c \;=\; \underbrace{(p-1)(p-1)\dots(p-1)}_{k-1\text{ раз}}\,(p-c) \quad \text{при } 0 < c < p

Для семеричной системы (p=7p = 7) это значит: 7kc7^k - c — это (k1)(k-1) цифр 6 и последняя цифра 7c7 - c.

Разбор на маленьком примере

Возьмём N=76+747N = 7^6 + 7^4 - 7 — тот же каркас, что в реальном задании, но с показателями, которые можно проверить перебором. Сначала выделяем общий множитель у вычитаемой пары:

747=7(731)7^4 - 7 = 7 \cdot (7^3 - 1)

Число 731=3427^3 - 1 = 342 в семеричной системе — это 33 цифры 6 подряд (по правилу выше, при c=1c=1: k1=2k-1=2 цифры 6 и последняя цифра 71=67-1=6, то есть все 3 цифры — шестёрки): 342=6667342 = 666_7. Умножение на 7 дописывает один ноль справа: 747=666077^4 - 7 = 6660_7 (4 цифры, разряды 3–0). Слагаемое 767^6 не пересекается по разрядам с этим блоком (разряд 6 против разрядов 0–3) и просто ставит цифру 1 в разряде 6, а разряд 4 остаётся нулевым — на него ничего не «доехало»:

разряд:   6 5 4 3 2 1 0
цифра:    1 0 0 6 6 6 0

N = 1006660 (в системе с основанием 7)

Проверка Python-ом (переводим в десятичную, чтобы точно убедиться, что метод и прямой перевод дают одно и то же):

n = 7**6 + 7**4 - 7
digits = []
while n:
    digits.append(n % 7)
    n //= 7
print(digits[::-1])
# [1, 0, 0, 6, 6, 6, 0]

Совпало: 3 цифры 6. В реальных заданиях банка таких «блоков заёма» может быть несколько (см. пример 1 ниже, где их два), и они не пересекаются по разрядам, если между показателями степеней достаточный зазор — тогда каждый блок считается отдельно и результаты складываются.

Сумма цифр, остаток и признаки делимости в системе с основанием p

В десятичной системе признак делимости на 9 (остаток от деления на 9 равен остатку от деления суммы цифр на 9) и признак делимости на 11 (через знакочередующуюся сумму цифр) — не совпадение, а следствие того, что 101(mod9)10 \equiv 1 \pmod 9 и 101(mod11)10 \equiv -1 \pmod{11}. Те же два правила работают в любой системе счисления с основанием pp.

Делимость на p1p - 1: сумма цифр

Так как p1(modp1)p \equiv 1 \pmod{p-1}, то и pi1(modp1)p^i \equiv 1 \pmod{p-1} для любого ii. Значит:

N=dipi    di(modp1)N = \sum d_i \cdot p^i \;\equiv\; \sum d_i \pmod{p-1}

Остаток от деления числа на p1p-1 равен остатку от деления суммы его цифр на p1p-1. Это и есть тот приём, которым в задании 14 подбирают цифру x при делителе, равном p1p - 1 (например, основание 15 и делитель 14): вместо развёрнутой записи достаточно сложить коэффициенты при известных цифрах и добавить неизвестную.

Делимость на p+1p + 1: знакочередующаяся сумма

Так как p1(modp+1)p \equiv -1 \pmod{p+1}, чётные степени pp дают остаток 11, а нечётные — остаток 1-1:

Nd0d1+d2d3+(modp+1)N \equiv d_0 - d_1 + d_2 - d_3 + \dots \pmod{p+1}

Например, в системе с основанием 17 признак делимости на 9 (девять — это 17817 - 8, но что важнее, 18=17+118 = 17 + 1, то есть 9 — делитель числа p+1p+1) — это знакочередующаяся сумма цифр, взятая по модулю 9.

Произвольный делитель: остатки степеней

Если делитель mm не связан с pp простой формулой, признак всё равно строится — только вместо «сумма цифр» берут «сумма цифр, умноженных на остаток соответствующей степени pp по модулю mm»:

Nmodm  =  (di(pimodm))modmN \bmod m \;=\; \left(\sum d_i \cdot (p^i \bmod m)\right) \bmod m

Остатки pimodmp^i \bmod m рано или поздно зацикливаются (значений остатка конечное число), и цикл достаточно найти один раз для всех показателей степени, которые встречаются в выражении.

p, m = 21, 18
r = 1
seen = []
for i in range(10):
    seen.append(r)
    r = (r * p) % m
print(seen)
# [1, 3, 9, 9, 9, 9, 9, 9, 9, 9] — начиная с квадрата, остаток стабилен

Именно эта техника — остатки степеней по модулю делителя — лежит в основе разбора примера 2 ниже, где основание 15, а делитель 14 = p1p - 1, поэтому все степени дают остаток 1 и вычисление сводится к сумме цифр.

Поиск основания системы по уравнению

Ещё один тип задач на позиционные системы — не переводить число и не искать цифру, а найти само основание xx, при котором выполняется числовое равенство. Метод один: записать каждое число из условия в развёрнутом виде через xx, получить уравнение относительно xx и решить его, не забыв про ограничение на допустимые основания.

Пример: найти основание xx, в котором выполняется равенство 15x+6x=24x15_x + 6_x = 24_x.

(1x+5)+6=2x+4(1 \cdot x + 5) + 6 = 2 \cdot x + 4
x+11=2x+4        x=7x + 11 = 2x + 4 \;\;\Rightarrow\;\; x = 7

Проверка Python-ом:

for x in range(2, 20):
    try:
        if int('15', x) + int('6', x) == int('24', x):
            print(x)
    except ValueError:
        pass
# 7

Два обязательных ограничения, которые легко забыть. Во-первых, основание — целое число не меньше 2. Во-вторых, каждая цифра в записи должна быть строго меньше основания: если бы среди цифр условия встретилась восьмёрка, ответ x = 7 автоматически отпал бы, даже если бы уравнение формально ему удовлетворяло. Проверять это ограничение нужно отдельным шагом уже после решения уравнения.

Python: перевод в систему с основанием p и полный перебор

На КЕГЭ доступна среда программирования, и для задания 14 полный перебор по всем цифрам-кандидатам — это законный и часто самый быстрый способ решения, а не «читерство»: цифр в алфавите системы с основанием pp всего pp, перебор занимает миллисекунды.

Ловушка: int(x, p) работает только в одну сторону

Встроенная функция int("123", 15) переводит строку ИЗ системы с основанием 15 В десятичное число (даст 258). Обратной встроенной функции — «перевести десятичное число в произвольное основание p» — в Python нет. Есть только точечные bin(), oct(), hex() для оснований 2, 8 и 16. Для любого другого основания (7, 15, 17, 21, 26, 27 — как раз тех, что встречаются в задании 14) функцию перевода нужно написать самому.

Функция перевода в систему с основанием p

def to_base(n, p):
    if n == 0:
        return [0]
    digits = []
    while n:
        digits.append(n % p)
        n //= p
    return digits[::-1]

print(to_base(258, 15))
# [1, 2, 3]  -- список цифр, а не строка: цифра может быть двузначным
# числом (например, 20 при основании 27), поэтому склеивать их в строку
# напрямую нельзя

Обратная функция — из списка цифр в десятичное число

def from_base(digits, p):
    n = 0
    for d in digits:
        n = n * p + d
    return n

print(from_base([1, 2, 3], 15))
# 258

Шаблон полного перебора для второго семейства формулировок

Когда в записи спрятана неизвестная цифра x (и, возможно, вторая цифра y), перебираем все допустимые значения от 0 до p1p-1 и напрямую проверяем условие — никакой модульной арифметики руками писать не нужно:

p = 15
candidates = []
for x in range(p):
    a = from_base([1, 2, 3, x, 5], p)
    b = from_base([1, x, 2, 3, 3], p)
    if (a + b) % 14 == 0:
        candidates.append(x)

x = min(candidates)
a = from_base([1, 2, 3, x, 5], p)
b = from_base([1, x, 2, 3, 3], p)
print(x, (a + b) // 14)

Для выражений со степенями (первое семейство формулировок) перебор не нужен — там считают само число через n=pa+pbcn = p**a + p**b - c (Python работает с произвольно большими целыми числами без переполнения) и применяют to_base, как в примерах ниже.

Алгоритм решения задания 14

  1. Определите семейство формулировки. «Значение выражения записали в системе с основанием p — сколько цифр…» — работаете со степенями и приёмом «занимаем разряд». «Операнды записаны в системе p, есть неизвестная цифра» — работаете с остатками и делимостью.
  2. Приведите все степени к одному основанию. Если в выражении встречаются степени разных чисел (49, 243, 729…), выразите их через основание системы записи — почти всегда все числа являются степенями одного простого числа.
  3. Сгруппируйте слагаемые по разрядам. Найдите пары «большая степень минус меньшая степень» или «минус маленькое число» — именно они создают цепочки одинаковых цифр p1p - 1. Проверьте, что блоки заёма не пересекаются по разрядам с другими слагаемыми.
  4. Для семейства с неизвестной цифрой распишите оба операнда в развёрнутом виде, сложите и найдите остаток суммы по модулю делителя — через сумму цифр (если делитель равен p1p-1), знакочередующуюся сумму (если делитель равен p+1p+1) или остатки степеней (в общем случае).
  5. Решите условие на неизвестную цифру и отберите наименьшее или наибольшее подходящее значение из алфавита 0p10 \dots p-1, как требует вопрос.
  6. Проверьте себя в Python (перевод + перебор из этой статьи) — на экзамене среда программирования доступна, и двух строк кода достаточно, чтобы устранить любую ошибку в ручном разборе разрядов.
  7. Запишите ответ в десятичной системе, без указания основания и без лишних символов — даже если всё условие было про другую систему счисления.

Доведите приём до автоматизма

Прорешайте 10–15 заданий подряд — и «занимаем разряд» и сумма цифр перестанут казаться фокусом. Задания ЕГЭ по информатике из банка ФИПИ с проверкой ответа — на Repet.ai.

Открыть тренажёр

Примеры с разбором

Пример 1. Приём «занимаем разряд» на двух блоках

Условие (реальное задание из открытого банка ФИПИ):

Значение выражения 497+721749^7 + 7^{21} - 7 записали в системе счисления с основанием 7. Сколько цифр 6 содержится в этой записи?

Решение:

Шаг 1. Приводим всё к степеням семёрки: 497=(72)7=71449^7 = (7^2)^7 = 7^{14}. Выражение принимает вид:

N=721+7147N = 7^{21} + 7^{14} - 7

Шаг 2. Слагаемое 7217^{21} и пара 71477^{14} - 7 не пересекаются по разрядам (21 против разрядов ниже 14) — разбираем пару отдельно:

7147=7(7131)7^{14} - 7 = 7 \cdot (7^{13} - 1)

Число 71317^{13} - 1 — это 13 цифр 6 подряд (по правилу заёма: при c=1c = 1 и k=13k = 13 все kk цифр становятся p1=6p - 1 = 6). Умножение на 7 дописывает один ноль справа, то есть 71477^{14} - 7 — это 13 шестёрок и ноль, занимающие разряды 13–0.

Шаг 3. Слагаемое 7217^{21} ставит цифру 1 в разряде 21, а разряды с 20-го по 14-й остаются нулевыми — туда ничего не «доехало». Полная запись:

1  0000000 (7 нулей)  6666666666666 (13 шестёрок)  0

Шестёрок ровно 13. Проверка Python-ом на самом выражении (числа большие, но Python считает с ними без переполнения):

n = 49**7 + 7**21 - 7
digits = []
while n:
    digits.append(n % 7)
    n //= 7
print(digits.count(6))
# 13

Ответ: 13. Здравый смысл: если бы в выражении не было вычитания «− 7», разрядов, «съеденных» заёмом, не появилось бы вовсе, и шестёрок в записи не было бы. Вычитание маленького числа из огромной степени — источник всех шестёрок в этой задаче.

Пример 2. Неизвестная цифра и остаток по модулю p − 1

Условие (реальное задание из открытого банка ФИПИ):

Операнды арифметического выражения записаны в системе счисления с основанием 15.

135x715+7x53115135x7_{15} + 7x531_{15}

В записи чисел переменной x обозначена неизвестная цифра из алфавита 15-ричной системы счисления. Определите наименьшее значение x, при котором значение данного арифметического выражения кратно 14. Для найденного значения x вычислите частное от деления значения арифметического выражения на 14 и укажите его в ответе в десятичной системе счисления. Основание системы счисления в ответе указывать не нужно.

Решение:

Шаг 1. Делитель — 14, а основание — 15, то есть 14=p114 = p - 1: работает признак «сумма цифр». Складываем цифры каждого операнда:

  • 135x715135x7_{15}: цифры 1,3,5,x,71,3,5,x,7, сумма 16+x16 + x;
  • 7x531157x531_{15}: цифры 7,x,5,3,17,x,5,3,1, сумма 16+x16 + x.

Суммарная сумма цифр обоих чисел: 32+2x32 + 2x. По признаку делимости, вся сумма кратна 14 тогда и только тогда, когда 32+2x32 + 2x кратно 14:

32+2x0(mod14)    2x10(mod14)    x5(mod7)32 + 2x \equiv 0 \pmod{14} \;\Rightarrow\; 2x \equiv 10 \pmod{14} \;\Rightarrow\; x \equiv 5 \pmod 7

В алфавите 15-ричной системы (цифры 0…14) условию x5(mod7)x \equiv 5 \pmod 7 удовлетворяют x=5x = 5 и x=12x = 12; наименьшее — x=5x = 5.

Шаг 2. Подставляем x=5x = 5 и переводим оба числа в десятичную, чтобы найти частное:

def from_base(digits, p):
    n = 0
    for d in digits:
        n = n * p + d
    return n

x = 5
a = from_base([1, 3, 5, x, 7], 15)   # 61957
b = from_base([7, x, 5, 3, 1], 15)   # 372421
s = a + b                             # 434378
print(s % 14, s // 14)
# 0 31027

Ответ: 31027. Обратите внимание: этот ответ — наименьшее x и его частное, но не путайте с примером в блоке теории про перебор выше — там был другой делитель (14 у другого выражения из этого же семейства), поэтому численно другой результат. Проверка: 434378/14=31027,0434378 / 14 = 31027{,}0 — делится нацело, остатка нет.

Пример 3. Прямая композиция цифр без заёма

Условие (реальное задание из открытого банка ФИПИ):

Значение арифметического выражения 3438+2423+420+345+244+13 \cdot 4^{38} + 2 \cdot 4^{23} + 4^{20} + 3 \cdot 4^5 + 2 \cdot 4^4 + 1 записали в системе счисления с основанием 16. Сколько значащих нулей содержится в этой записи?

Решение:

Шаг 1. Основание 16 — это 424^2, поэтому 42k=16k4^{2k} = 16^k, а 42k+1=416k4^{2k+1} = 4 \cdot 16^k. В этом примере заёма нет — переводим каждое слагаемое отдельно:

  • 3438=316193 \cdot 4^{38} = 3 \cdot 16^{19} — цифра 3 в разряде 19;
  • 2423=241611=816112 \cdot 4^{23} = 2 \cdot 4 \cdot 16^{11} = 8 \cdot 16^{11} — цифра 8 в разряде 11;
  • 420=16104^{20} = 16^{10} — цифра 1 в разряде 10;
  • 345=121623 \cdot 4^5 = 12 \cdot 16^2 и 244=21622 \cdot 4^4 = 2 \cdot 16^2 вместе дают 1416214 \cdot 16^2 — цифра 1414 (шестнадцатеричная E) в разряде 2;
  • 1=11601 = 1 \cdot 16^0 — цифра 1 в разряде 0.

Все коэффициенты (3, 8, 1, 14, 1) меньше 16 — переносов между разрядами не возникает, и это уже готовые шестнадцатеричные цифры. Старший разряд — 19-й, значит в записи 20 цифр (разряды 19…0):

n = 3*4**38 + 2*4**23 + 4**20 + 3*4**5 + 2*4**4 + 1
s = ''
while n:
    s = "0123456789ABCDEF"[n % 16] + s
    n //= 16
print(s, len(s), s.count('0'))
# 30000000810000000E01 20 15

Ненулевых цифр — пять (в разрядах 19, 11, 10, 2 и 0), значит нулей 205=1520 - 5 = 15. Ответ: 15. Здравый смысл: разрядов много (20), а ненулевых слагаемых в исходном выражении — всего пять, поэтому «пустых» разрядов должно быть заметно больше половины — 15 из 20 этому ожиданию соответствует.

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

Пытаются перевести огромное число в десятичную систему напрямую

Показатели степеней в условии достигают тысяч — такое число физически нельзя выписать на бланке или посчитать в столбик. Задание всегда решается через структуру записи (приём «занимаем разряд», остатки степеней), а не через прямое вычисление значения.

Забыли привести все степени к одному основанию

Если в выражении фигурируют 49, 243, 729, 27 и 9 — это 727^2, 353^5, 363^6, 333^3 и 323^2. Пока все числа не выражены через основание системы, в которой записывают ответ, приём «занимаем разряд» не применить — сначала обязательно приводите степени.

Посчитали число цифр «p − 1» без единицы за перенос

В формуле pkcp^k - c количество цифр p1p-1 равно k1k - 1, а не kk: последний (младший) разряд — это отдельная цифра pcp - c, а не ещё одна p1p-1. Спутать эти два числа — самая частая арифметическая ошибка на этом типе задания.

Не заметили, что блоки заёма накладываются друг на друга

Если в выражении несколько слагаемых с вычитанием, а показатели степеней стоят близко друг к другу, разряды двух блоков могут пересечься — тогда независимая обработка каждой скобки даёт неверный результат. Перед тем как разбивать выражение на скобки, проверьте (по показателям степеней), что диапазоны разрядов не пересекаются.

Применили признак делимости на 9 и 11 к произвольному основанию

«Сумма цифр» работает для делителя p1p - 1, а «знакочередующаяся сумма» — для делителя p+1p + 1. Если делитель не равен ни тому, ни другому (как 18 при основании 21), нужно считать остатки степеней основания по этому делителю отдельно — готовое правило «сложить цифры» здесь неприменимо.

Забыли проверить допустимость найденной цифры

Решив сравнение вида x5(mod7)x \equiv 5 \pmod 7, нужно перебрать все значения из алфавита системы (0…p−1) и выбрать среди них наименьшее или наибольшее — в 15-ричной системе подходят и 5, и 12, и брать первое попавшееся без проверки остальных кандидатов — ошибка.

Указали основание системы счисления в ответе

Формулировка «основание системы счисления в ответе указывать не нужно» означает, что ответ — обычное десятичное число, без нижнего индекса и без слова «основание». Записанный ответ вида «31027 в 15-ричной» будет отклонён системой проверки как несовпадающий с эталоном.

Как задание 14 связано с остальным экзаменом

Всего в КЕГЭ по информатике 27 заданий с кратким ответом, максимальный первичный балл — 29. Задание 14 занимает в этой структуре характерное место:

  • оно входит в раздел «Теоретические основы информатики» — самый крупный раздел кодификатора, 11 заданий и 11 первичных баллов;
  • вместе с заданиями 11, 12, 13, 15, 16, 17 и 18 образует блок заданий повышенного уровня — их 11 во всей работе;
  • делит понятие «система счисления» с заданием 4 (кодирование и условие Фано, КЭС 2.1) — там системы счисления нужны для декодирования сообщений, а не для арифметики;
  • приём «сумма цифр по модулю p1p - 1» и работа с остатками — тот же математический аппарат, что и в задачах на делимость из задании 16 (рекуррентные выражения), только применённый к разрядам, а не к последовательностям.

План подготовки на 3 недели

Неделя 1 — база: перевод и арифметика

День 1–2: повторите развёрнутую запись, перевод делением с остатком и переходы 2↔8↔16 по триадам и тетрадам — без этого дальнейшие приёмы не усвоятся. День 3–5: потренируйтесь складывать и вычитать числа прямо в системе с основанием 7, 15 и 17 «в столбик», без перевода в десятичную — на числах из 3–4 цифр. День 6–7: решите 5–7 заданий на прямую композицию цифр (как пример 3 в этой статье) — без заёма, чтобы закрепить связь степеней и разрядов.

Неделя 2 — приём «занимаем разряд» и делимость

День 1–3: разберите приём «занимаем разряд» на маленьких числах (как в теоретическом блоке), затем переходите к настоящим заданиям банка со степенями в сотни и тысячи — техника не меняется. День 4–5: отработайте признаки делимости на p1p-1 и p+1p+1 — сначала на заданиях, где делитель точно совпадает с одним из этих чисел, а вопрос понятен из условия. День 6–7: решите 3–4 задания с общим делителем произвольного вида, посчитав остатки степеней вручную для проверки метода.

Неделя 3 — код и скорость

День 1–2: напишите свои функции to_base и from_base и проверьте их на заданиях, которые уже решили руками — если результат отличается, ищите ошибку в ручном разборе разрядов, а не в коде. День 3–5: решайте задания второго семейства (с неизвестной цифрой) сразу через полный перебор в Python — это быстрее ручного вывода сравнения и почти не даёт ошибиться. День 6–7: пройдите смешанный набор заданий на время (не больше 8 минут на задание, включая проверку) и сверьте себя в тренажёре на заданиях из банка ФИПИ.

Проверьте себя на реальных заданиях

На Repet.ai собраны задания ЕГЭ по информатике из открытого банка ФИПИ. Решайте онлайн, проверяйте ответ мгновенно и разбирайте решение — бесплатно.

Перейти к практике
Частые вопросы

Часто задаваемые вопросы

Понимание позиционных систем счисления: перевод между системами, арифметику с числами в произвольном основании без перехода в десятичную, поведение разрядов при вычитании больших степеней и признаки делимости в системе с основанием p. В кодификаторе это элемент содержания 2.3, раздел «Теоретические основы информатики».

1 первичный балл по принципу «всё или ничего»: ответ либо полностью совпадает с эталоном, либо задание оценивается в 0. Уровень сложности — повышенный. Файл к заданию не прилагается, все данные даны в тексте условия.

Приёмом «занимаем разряд»: если из степени основания p^k вычесть число, меньшее p, получившиеся разряды превращаются в цепочку цифр p−1, кроме последнего разряда, который равен p минус вычитаемое число. Например, 7^13 − 1 в семеричной системе — это 13 цифр 6 подряд. Слагаемые с непересекающимися разрядами (по показателям степени) обрабатываются независимо, а их результаты складываются.

Через остаток от деления на заданное число. Если делитель равен p−1 (основание минус один), сумма цифр числа даёт тот же остаток, что и само число — значит, можно решить линейное сравнение относительно неизвестной цифры. Если делитель равен p+1, работает знакочередующаяся сумма цифр. Для произвольного делителя считают остатки от деления степеней основания на этот делитель.

Да, полный перебор по всем цифрам алфавита системы (от 0 до p−1) — законный и часто самый быстрый способ, особенно для заданий с неизвестной цифрой. На КЕГЭ доступна среда программирования. Для выражений со степенями достаточно посчитать значение напрямую (Python работает с произвольно большими целыми числами) и перевести результат в нужную систему счисления написанной самостоятельно функцией.

Нет, это частая ошибка. Функция int("123", 15) переводит строку ИЗ системы с основанием 15 в десятичное число, а не наоборот. Встроенной функции «перевести десятичное число в произвольное основание p» в Python нет — есть только bin(), oct() и hex() для оснований 2, 8 и 16. Для любого другого основания нужно написать функцию перевода самостоятельно: цикл с делением на p и накоплением остатков.

Одно число в десятичной системе счисления — даже если всё условие было про систему с другим основанием. Если в вопросе явно написано «основание системы счисления в ответе указывать не нужно», это означает, что нужно записать только итоговое число, без нижнего индекса основания, без слов и без единиц измерения.

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


Готовы взять балл повышенного уровня?

Задание 14 пугает большими степенями, но решается небольшим набором приёмов: развёрнутая запись, «занимаем разряд», сумма цифр по модулю и перебор в Python. Отработайте их на реальных заданиях из открытого банка ФИПИ с мгновенной проверкой ответа.