Способы решения задания на системы счисления №14 в ЕГЭ

Демонстрационный вариант контрольных измерительных материалов единого государственного экзамена 2024 года по информатике включает сразу два типа заданий № 14 по теме системы счисления (рис. 1). В данной статье приведены решения этих заданий на языке программирования Python, подробное описание предлагаемых программ и ссылки на более ранние публикации по теме.

Скачать способы решения: Скачать

Смотреть онлайн

Тип 1
Формулировка задания:

Операнды арифметического выражения записаны в системе счисления с основанием 19. 98897x2119 + 2x92319  В записи чисел переменной x обозначена неизвестная цифра из алфавита 19-ричной системы счисления.  Определите наибольшее значение x,  при котором значение данного арифметического выражения кратно 18.  Для найденного x вычислите частное  от деления значения арифметического выражения на 18 и укажите его  в ответе в десятичной системе счисления. Основание системы счисления  указывать не нужно.

Решение задания в Python (использование функции int):
digits = "0123456789ABCDEFGHI"
print("x quotient")
for x in digits:
s = int("98897" + x + "21", 19) + int("2" + x + "923", 19)
if s % 18 == 0:
 print(x, s // 18)

Вывод программы:
x quotient
6 469030538
F 469034148

Решение задания в Python (полиномиальное представление чисел):
print("x quotient")
for x in range(19):
s = (9*19**7 + 8*19**6 + 8*19**5 + 9*19**4 + 7*19**3 + 
x*19**2 + 2*19 + 1) + (2*19**4 + x*19**3 + 9*19**2 + 2*19 + 3)
if s % 18 == 0:
 print(x, s // 18)
Вывод программы:
x quotient
6 469030538
15 469034148

В первой строке первого варианта решения в переменную digits записаны цифры 19-ричной системы счисления: 10 цифр десятичной системы счисления от 0 до 9 и 9 первых  букв английского алфавита от A до I. 
Проблема при формировании строки  возможных цифр 19-ричной системы счисления заключается в том,  что ученики зачастую не помнят английский алфавит, количество и порядок букв в нём. Помочь в решении  этой проблемы может знание о том,  что максимальная цифра любой позиционной системы счисления на  единицу меньше основания данной  системы счисления, и функция int,  осуществляющая перевод заданной  первым аргументом строки из заданной вторым аргументом системы  счисления в десятичную систему  счисления. Если буква I выступает  в роли последней цифры 19-ричной системы счисления, то команда print(int("I", 19)) выведет  значение 18 по аналогии с тем, как  для 16-ричной системы счисления  команда print(int("F", 16)) выведет значение 15. Таким образом,  буквы, используемые в заданной системе счисления, можно подобрать  на экзамене с помощью функции int. Во второй строке программы  выведена шапка для простоты восприятия последующей таблицы: 
print("x quotient"). Слово «quotient» переводится с английского  языка как «частное, отношение, результат деления». В третьей строке программы  с помощью цикла for производится  перебор всех значений переменной x,  в которую последовательно присваиваются символы-цифры из строки  digits. Говорят, что цикл for x in  digits осуществляет итерирование  по строке.
В теле цикла 19-ричные числа 98897x2119 и 2x92319 с помощью  функции int преобразуются в десятичную систему счисления и суммируются:
s = int("98897" + x + + "21", 19) + int("2" + x + + "923", 19). Первым аргументом функций  int служат строки, представляющие  записи чисел в 19-ричной системе 
счисления, второй аргумент функций int, равный 19, является основанием системы счисления, из которой  осуществляется перевод в десятичную систему счисления. Необходимо заметить, что максимальным  основанием системы счисления для  функции int является 36. При основании системы счисления большем 36 необходимо представлять 
заданные числа как полиномы для  их перевода в десятичную систему  счисления:
s = (9*19**7 + 8*19**6 +  + 8*19**5 + 9*19**4 +  + 7*19**3 ++ x*19**2 +  + 2*19 + 1) + (2*19**4 +  + x*19**3 + 9*19**2 +  + 2*19 + 3),
при этом значения переменной x  нужно перебирать в виде: for x in  range(19), где 19 – основание системы счисления, в данном случае  в переменную x присваиваются не  19-ричные цифры, а их десятичные  представления – десятичные числа  от 0 до 18.
В случае если значение полученной суммы кратно 18, происходит  42 ИНФОРМАТИКА вывод значения переменной x и искомого частного от деления значения  арифметического выражения на 18:  if s % 18 == 0: print(x, s // 18). В данном задании требовалось найти  частное для наибольшего значения  x, поэтому в качестве ответа необходимо выбрать последнее подходящее 
частное. Примеры других заданий данного типа, а также решение задания  в Excel можно увидеть в статье (Попов В.С., Решаем новую задачу ЕГЭ  № 14 в Python и электронной таблицей. Функция int и полиномиальное  представление чисел // Потенциал:  Математика, Физика, Информатика,  № 2 (218), 2023)

Вы можете создать экзаменационный типовой вариант ВПР, ЕГЭ и ОГЭ на нашем сайте