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

Системы счисления: большие выражения

Три типа задач с большими числами: посчитать цифры в записи выражения, найти неизвестную цифру по кратности и найти x по количеству нулей в записи.

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

  • c·Bk в системе B — цифра c и k нулей.
  • Bk − Bm (k > m) — это (k − m) цифр B − 1 и m нулей.
  • Цифры больше 9 обозначают буквами: A = 10, B = 11, …

Python

  • Целые числа любой длины: 2187 ** 2020 считается точно.
  • Цифры числа в системе B: остатки x % B и деление x //= B.
  • Из записи в десятичное: int('1A3', 16).

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

  • Использовать / вместо // — большие числа «ломаются» в дробях.
  • Перебрать x только до 9, когда основание больше 10.
  • Ответить x вместо частного (тип 2).

Разобранные варианты

Сначала реши сам, потом открой разбор. Все разборы с программами на Python.

Вариант 1

запись в 9-ричной системе

Значение арифметического выражения 4·6561313 + 5·3350 + 24350 − 1458 записали в системе счисления с основанием 9. Определите в 9-ричной записи числа количество цифр с числовым значением 8.

Разбор

Шаг 1. Приводим к одному основанию. Все числа — степени 3, а 9 = 32:

  • 4·6561313 = 4·32504 = 4·91252
  • 5·3350 = 5·3350 = 5·9175
  • 24350 = 3250 = 9125
  • − 1458 = 2·36 = 2·93

Шаг 2. Как выглядит запись. Слагаемое c·9k — это цифра c и k нулей. Вычитание создаёт длинные серии цифр 8 (как 1000 − 1 = 999). Вручную аккуратно посчитать трудно, поэтому переводим программой: Python работает с целыми числами любой длины. В записи 1253 цифры.

Ответ: 121

Решение на Python.

x = 4 * 6561 ** 313 + 5 * 3 ** 350 + 243 ** 50 - 2 * 729 ** 1
digits = []
while x > 0:
    digits.append(x % 9)
    x //= 9
print(digits.count(8))

Вариант 2

неизвестная цифра · основание 29

Операнды арифметического выражения записаны в системе счисления с основанием 29: 6L7LxB1E29 + MxEO2SC29. В записи чисел переменной x обозначена неизвестная цифра из алфавита 29-ричной системы счисления. Определите наименьшее значение x, при котором значение данного выражения кратно 9. Для найденного x вычислите частное от деления значения выражения на 9 и укажите его в ответе в десятичной системе счисления. Основание системы счисления указывать не нужно.

Разбор

Шаг 1. Цифра x может быть от 0 до 28. Для каждой подставляем цифру в обе записи, переводим числа в десятичную систему (int(s, 29)) и проверяем кратность 9.

Шаг 2. Кратно 9 при x = 3, 12, 21. Наименьшее — x = 3.

Шаг 3. Значение при x = 3: 129307197285; частное 129307197285 / 9 = 14367466365.

Цифры больше 9 записаны латинскими буквами: A = 10, B = 11 и т. д. — так их понимает int(s, основание).

Ответ: 14367466365

Решение на Python.

alphabet = '0123456789ABCDEFGHIJKLMNOPQRS'
res = []
for x in alphabet:
    v = int('6L7LxB1E'.replace('x', x), 29) + int('MxEO2SC'.replace('x', x), 29)
    if v % 9 == 0:
        res.append(v // 9)
print(res[0])

Вариант 3

выражение минус x · основание 13

Значение арифметического выражения 4·13170 + 9·13160 − x, где x — целое положительное число, не превышающее 1000, записали в 13-ричной системе счисления. Определите наибольшее значение x, при котором в 13-ричной записи числа, являющегося значением данного выражения, содержится ровно 159 цифр 12. В ответе запишите число в десятичной системе счисления.

Разбор

Шаг 1. Запись без x. 4·13170 + 9·13160 — это цифра 4, затем 9 нулей, цифра 9 и ещё 160 нулей.

Шаг 2. Вычитаем x. x ≤ 1000 занимает не больше 3 цифр в 13-ричной системе. При вычитании из ...900…0 младший разряд «занимает» единицу у цифры 9: она уменьшается на 1, а нули справа превращаются в 12, кроме последних 3 разрядов, где получается запись числа 133 − x. Поэтому количество нужных цифр зависит только от записи числа 133 − x.

Шаг 3. Проще всего перебрать x программой от 1000 вниз и найти первое подходящее: x = 846.

Ответ: 846

Решение на Python.

for x in range(1000, 0, -1):
    v = 4 * 13 ** 170 + 9 * 13 ** 160 - x
    count = 0
    while v > 0:
        if v % 13 == 12:
            count += 1
        v //= 13
    if count == 159:
        print(x)
        break

Вариант 4

запись в 49-ричной системе

Значение арифметического выражения 16807328 + 343273 + 4·49362 − 2401127 − 7203 записали в системе счисления с основанием 49. Определите в 49-ричной записи числа количество цифр 0.

Разбор

Шаг 1. Приводим к одному основанию. Все числа — степени 7, а 49 = 72:

  • 16807328 = 71640 = 49820
  • 343273 = 7819 = 49409·71
  • 4·49362 = 4·7724 = 4·49362
  • − 2401127 = 7508 = 49254
  • − 7203 = 3·74 = 3·492

Шаг 2. Как выглядит запись. Слагаемое c·49k — это цифра c и k нулей. Вычитание создаёт длинные серии цифр 48 (как 1000 − 1 = 999). Вручную аккуратно посчитать трудно, поэтому переводим программой: Python работает с целыми числами любой длины. В записи 821 цифра.

Ответ: 458

Решение на Python.

x = 16807 ** 328 + 343 ** 273 + 4 * 49 ** 362 - 2401 ** 127 - 3 * 2401 ** 1
digits = []
while x > 0:
    digits.append(x % 49)
    x //= 49
print(digits.count(0))

Вариант 5

неизвестная цифра · основание 23

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

Разбор

Шаг 1. Цифра x может быть от 0 до 22. Для каждой подставляем цифру в обе записи, переводим числа в десятичную систему (int(s, 23)) и проверяем кратность 22.

Шаг 2. Кратно 22 при x = 3, 14. Наибольшее — x = 14.

Шаг 3. Значение при x = 14: 2510582734; частное 2510582734 / 22 = 114117397.

Цифры больше 9 записаны латинскими буквами: A = 10, B = 11 и т. д. — так их понимает int(s, основание).

Ответ: 114117397

Решение на Python.

alphabet = '0123456789ABCDEFGHIJKLM'
res = []
for x in alphabet:
    v = int('AxKA6'.replace('x', x), 23) + int('GLDIGxI'.replace('x', x), 23)
    if v % 22 == 0:
        res.append(v // 22)
print(res[-1])

Вариант 6

выражение минус x · основание 11

Значение арифметического выражения 9·11196 + 4·1148 − x, где x — целое положительное число, не превышающее 5000, записали в 11-ричной системе счисления. Определите наибольшее значение x, при котором в 11-ричной записи числа, являющегося значением данного выражения, содержится ровно 150 нулей. В ответе запишите число в десятичной системе счисления.

Разбор

Шаг 1. Запись без x. 9·11196 + 4·1148 — это цифра 9, затем 147 нулей, цифра 4 и ещё 48 нулей.

Шаг 2. Вычитаем x. x ≤ 5000 занимает не больше 4 цифр в 11-ричной системе. При вычитании из ...400…0 младший разряд «занимает» единицу у цифры 4: она уменьшается на 1, а нули справа превращаются в 10, кроме последних 4 разрядов, где получается запись числа 114 − x. Поэтому количество нужных цифр зависит только от записи числа 114 − x.

Шаг 3. Проще всего перебрать x программой от 5000 вниз и найти первое подходящее: x = 3993.

Ответ: 3993

Решение на Python.

for x in range(5000, 0, -1):
    v = 9 * 11 ** 196 + 4 * 11 ** 48 - x
    count = 0
    while v > 0:
        if v % 11 == 0:
            count += 1
        v //= 11
    if count == 150:
        print(x)
        break

Вариант 7

запись в 25-ричной системе

Значение арифметического выражения 2·625305 + 4·125259 + 7812529 + 3·572 − 125 записали в системе счисления с основанием 25. Определите в 25-ричной записи числа количество цифр с числовым значением 24.

Разбор

Шаг 1. Приводим к одному основанию. Все числа — степени 5, а 25 = 52:

  • 2·625305 = 2·51220 = 2·25610
  • 4·125259 = 4·5777 = 4·25388·51
  • 7812529 = 5203 = 25101·51
  • 3·572 = 3·572 = 3·2536
  • − 125 = 53 = 251·51

Шаг 2. Как выглядит запись. Слагаемое c·25k — это цифра c и k нулей. Вычитание создаёт длинные серии цифр 24 (как 1000 − 1 = 999). Вручную аккуратно посчитать трудно, поэтому переводим программой: Python работает с целыми числами любой длины. В записи 611 цифр.

Ответ: 34

Решение на Python.

x = 2 * 625 ** 305 + 4 * 125 ** 259 + 78125 ** 29 + 3 * 5 ** 72 - 125 ** 1
digits = []
while x > 0:
    digits.append(x % 25)
    x //= 25
print(digits.count(24))

Вариант 8

неизвестная цифра · основание 21

Операнды арифметического выражения записаны в системе счисления с основанием 21: JxA2821 + 12xJ9EFD21. В записи чисел переменной x обозначена неизвестная цифра из алфавита 21-ричной системы счисления. Определите наименьшее значение x, при котором значение данного выражения кратно 60. Для найденного x вычислите частное от деления значения выражения на 60 и укажите его в ответе в десятичной системе счисления. Основание системы счисления указывать не нужно.

Разбор

Шаг 1. Цифра x может быть от 0 до 20. Для каждой подставляем цифру в обе записи, переводим числа в десятичную систему (int(s, 21)) и проверяем кратность 60.

Шаг 2. Кратно 60 при x = 4, 14. Наименьшее — x = 4.

Шаг 3. Значение при x = 4: 1996478820; частное 1996478820 / 60 = 33274647.

Цифры больше 9 записаны латинскими буквами: A = 10, B = 11 и т. д. — так их понимает int(s, основание).

Ответ: 33274647

Решение на Python.

alphabet = '0123456789ABCDEFGHIJK'
res = []
for x in alphabet:
    v = int('JxA28'.replace('x', x), 21) + int('12xJ9EFD'.replace('x', x), 21)
    if v % 60 == 0:
        res.append(v // 60)
print(res[0])

Вариант 9

запись в 16-ричной системе

Значение арифметического выражения 3·1281122 + 32302 + 5·256114 + 429 − 16 записали в системе счисления с основанием 16. Определите в 16-ричной записи числа сумму числовых значений всех цифр.

Разбор

Шаг 1. Приводим к одному основанию. Все числа — степени 2, а 16 = 24:

  • 3·1281122 = 3·27854 = 3·161963·22
  • 32302 = 21510 = 16377·22
  • 5·256114 = 5·2912 = 5·16228
  • 429 = 258 = 1614·22
  • − 16 = 2·23 = 2·160·23

Шаг 2. Как выглядит запись. Слагаемое c·16k — это цифра c и k нулей. Вычитание создаёт длинные серии цифр 15 (как 1000 − 1 = 999). Вручную аккуратно посчитать трудно, поэтому переводим программой: Python работает с целыми числами любой длины. В записи 1964 цифры.

Ответ: 219

Решение на Python.

x = 3 * 128 ** 1122 + 32 ** 302 + 5 * 256 ** 114 + 4 ** 29 - 2 * 8 ** 1
digits = []
while x > 0:
    digits.append(x % 16)
    x //= 16
print(sum(digits))

Вариант 10

выражение минус x · основание 5

Значение арифметического выражения 1·5105 + 4·566 − x, где x — целое положительное число, не превышающее 3000, записали в 5-ричной системе счисления. Определите наибольшее значение x, при котором в 5-ричной записи числа, являющегося значением данного выражения, содержится ровно 64 цифр 4. В ответе запишите число в десятичной системе счисления.

Разбор

Шаг 1. Запись без x. 1·5105 + 4·566 — это цифра 1, затем 38 нулей, цифра 4 и ещё 66 нулей.

Шаг 2. Вычитаем x. x ≤ 3000 занимает не больше 5 цифр в 5-ричной системе. При вычитании из ...400…0 младший разряд «занимает» единицу у цифры 4: она уменьшается на 1, а нули справа превращаются в 4, кроме последних 5 разрядов, где получается запись числа 55 − x. Поэтому количество нужных цифр зависит только от записи числа 55 − x.

Шаг 3. Проще всего перебрать x программой от 3000 вниз и найти первое подходящее: x = 2876.

Ответ: 2876

Решение на Python.

for x in range(3000, 0, -1):
    v = 1 * 5 ** 105 + 4 * 5 ** 66 - x
    count = 0
    while v > 0:
        if v % 5 == 4:
            count += 1
        v //= 5
    if count == 64:
        print(x)
        break

Для самостоятельного решения

Варианты 11–15 без разборов. Ответ можно проверить кнопкой.

Вариант 11

запись в 16-ричной системе

Значение арифметического выражения 2·8467 − 3·4250 + 2243 + 2·16102 + 5·2140 записали в системе счисления с основанием 16. Определите в 16-ричной записи числа количество цифр 0.

Вариант 12

неизвестная цифра · основание 27

Операнды арифметического выражения записаны в системе счисления с основанием 27: KQx351KH27 + BGF62Gx527 + 8xLLML2427. В записи чисел переменной x обозначена неизвестная цифра из алфавита 27-ричной системы счисления. Определите наименьшее значение x, при котором значение данного выражения кратно 25. Для найденного x вычислите частное от деления значения выражения на 25 и укажите его в ответе в десятичной системе счисления. Основание системы счисления указывать не нужно.

Вариант 13

выражение минус x · основание 7

Значение арифметического выражения 2·7237 + 4·7191 − x, где x — целое положительное число, не превышающее 2500, записали в 7-ричной системе счисления. Определите наибольшее значение x, при котором в 7-ричной записи числа, являющегося значением данного выражения, содержится ровно 49 нулей. В ответе запишите число в десятичной системе счисления.

Вариант 14

запись в 81-ричной системе

Значение арифметического выражения 4·81400 + 2·6561135 − 2·3159 − 3 записали в системе счисления с основанием 81. Определите в 81-ричной записи числа количество цифр 0.

Вариант 15

неизвестная цифра · основание 23

Операнды арифметического выражения записаны в системе счисления с основанием 23: 30EMx923 + 5D9x29A023 + G80I4Gx23. В записи чисел переменной x обозначена неизвестная цифра из алфавита 23-ричной системы счисления. Определите наименьшее значение x, при котором значение данного выражения кратно 22. Для найденного x вычислите частное от деления значения выражения на 22 и укажите его в ответе в десятичной системе счисления. Основание системы счисления указывать не нужно.