ЕГЭ по информатике 2022: Python и системы счисления

Задание 14 ЕГЭ по информатике 2022 года проверяет знание позиционных систем счисления. Рассмотрим решение задач на языке программирования Python. На выполнение отводится около трёх минут.

Работа с позиционными системами счисления в Python

Python позволяет эффективно работать с числами в различных системах счисления, включая большие числа. Основные задачи сводятся к переводу чисел из десятичной системы счисления в другие и обратно.

Примеры задач и их решения

Задача 1: Подсчет единиц в двоичной записи числа

Условие: Сколько единиц в двоичной записи числа 4<sup>2014</sup> + 2<sup>2015</sup> — 8?

Решение: Используем функцию bin() для преобразования числа в двоичную систему и count(‘1’) для подсчета единиц. Обратите внимание, что первые два символа (0b) – это не часть числа, а обозначение системы счисления.

print(bin(4**2014 + 2**2015 - 8).count('1'))

Задача 2: Подсчет нулей в двоичной записи числа

Условие: Сколько значащих нулей в двоичной записи числа 4<sup>512</sup> + 8<sup>512</sup> — 2<sup>128</sup> — 250?

Решение: Аналогично предыдущей задаче, используем bin(), но отбрасываем первые два символа (0b).

binary_representation = bin(4**512 + 8**512 - 2**128 - 250)[2:]
print(binary_representation.count('0'))

Задача 3: Подсчет цифр в системе счисления с основанием 9

Условие: Значение выражения 81<sup>2017</sup> + 9<sup>52203</sup> — 81 — 85 записано в системе счисления с основанием 9. Сколько цифр 8 в этой записи?

Решение: Используем цикл while, операторы % (остаток от деления) и // (целочисленное деление).

x = 81**2017 + 9**52203 - 81 - 85
k = 0
while x > 0:
    if x % 9 == 8:
        k += 1
    x //= 9
print(k)

Задача 4: Сумма цифр в системе счисления с основанием 6

Условие: Значение выражения 5 * 6<sup>1256</sup> — 5 * 36<sup>1146</sup> + 4<sup>1146</sup> + 4 * 6<sup>1050</sup> — 1087 записано в системе счисления с основанием 6. Найдите сумму цифр.

Решение: Считаем сумму цифр в цикле while.

x = 5 * 6**1256 - 5 * 36**1146 + 4**1146 + 4 * 6**1050 - 1087
k = 0
while x > 0:
    k += x % 6
    x //= 6
print(k)

Задача 5: Подсчет количества цифр 7 и 2 в системе счисления с основанием 13

Условие: Значение выражения 26<sup>2</sup> + 169 — 11 записано в системе счисления с основанием 13 (цифры A=10, B=11). Сколько цифр 7 и 2 в этой записи?

Решение: Используем цикл while для перебора цифр.

x = 26**2 + 169 - 11
count_7_2 = 0
while x > 0:
    digit = x % 13
    if digit == 7 or digit == 2:
        count_7_2 += 1
    x //= 13
print(count_7_2)

Задача 6: Подсчет различных цифр в шестнадцатеричной записи

Условие: Сколько различных цифр в шестнадцатеричной записи числа 2<sup>51</sup> + 2<sup>40</sup> + 2<sup>35</sup> + 2<sup>17</sup> — 2<sup>5</sup>?

Решение: Используем множество set() для хранения уникальных цифр.

x = 2**51 + 2**40 + 2**35 + 2**17 - 2**5
hex_representation = hex(x)[2:]
unique_digits = set(hex_representation)
print(len(unique_digits))

Задача 7: Определение основания системы счисления

Условие: В системе счисления с основанием r запись числа 87 оканчивается на 2 и содержит не менее трёх цифр. Чему равно r?

Решение: Перебираем значения основания r и проверяем условия.

for r in range(3, 101):
    num = 87
    count = 0
    temp = num
    while temp > 0:
        count += 1
        temp //= r
    if count >= 3 and num % r == 2:
        print(r)
        break

Задача 8: Сумма оснований с цифрой 1

Условие: Число 804 записано в системах счисления с основаниями от 2 до 10 включительно. При каких основаниях в записи этого числа есть цифра 1? Найдите сумму таких оснований.

Решение: Перебираем основания и проверяем наличие цифры ‘1’.

sum_bases = 0
for base in range(2, 11):
    num_str = ""
    num = 804
    while num > 0:
        num_str = str(num % base) + num_str
        num //= base
    if '1' in num_str:
        sum_bases += base
print(sum_bases)

Задача 9: Сумма цифр как простое число

Условие: Число 437 записано в системах счисления с основаниями от 2 до 10 включительно. При каких основаниях сумма цифр является простым числом? Найдите сумму таких оснований.

Решение: Используем функцию проверки на простоту.

def is_prime(n):
    if n <= 1:
        return False
    for i in range(2, int(n**0.5) + 1):
        if n % i == 0:
            return False
    return True

sum_bases = 0
for base in range(2, 11):
    num = 437
    sum_digits = 0
    while num > 0:
        sum_digits += num % base
        num //= base
    if is_prime(sum_digits):
        sum_bases += base
print(sum_bases)

Задача 10: Решение уравнения в различных системах счисления

Условие: В какой системе счисления выполняется равенство 12<sub>x</sub> * 31<sub>x</sub> = 402<sub>10</sub>?

Решение: Перебираем основания и проверяем равенство.

for x in range(5, 31):
    try:
        if int("12", x) * int("31", x) == 402:
            print(x)
            break
    except ValueError:
        pass

Задача 11: Решение уравнения в смежных системах счисления

Условие: Решите уравнение 101<sub>x</sub> + 13<sub>x+1</sub> = 101<sub>x+1</sub>.

Решение: Перебираем основания.

for x in range(2, 101):
    try:
        if int("101", x) + int("13", x + 1) == int("101", x + 1):
            print(x)
            break
    except ValueError:
        pass

Задача 12: Решение уравнения с переводом в шестнадцатеричную систему

Условие: Решите уравнение 60<sub>8</sub> + x<sub>10</sub> = 120<sub>7</sub>. Запишите ответ в шестнадцатеричной системе счисления.

Решение: Решаем уравнение и переводим результат в шестнадцатеричную систему.

x = int("120", 7) - int("60", 8)
hex_x = hex(x)[2:]
print(hex_x)

Рассмотрены различные типы задач 14 задания ЕГЭ по информатике, демонстрирующие использование Python для решения задач по позиционным системам счисления. Представленные примеры кода помогут в подготовке к экзамену.

Что будем искать? Например,программа