Задание 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 для решения задач по позиционным системам счисления. Представленные примеры кода помогут в подготовке к экзамену.