Демонстрационный вариант контрольных измерительных материалов единого государственного экзамена 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)
Вы можете создать экзаменационный типовой вариант ВПР, ЕГЭ и ОГЭ на нашем сайте