№ 5632 (Уровень: Средний)
(М. Ишимов) Операнды арифметического выражения записаны в системе счисления с основанием 21.
$$ 32xyA_{21} + 16y18_{21} $$
В записи чисел переменными х
и у
обозначены две неизвестные цифры из алфавита 21-ричной
системы счисления. Определите наименьшее значение х
, при котором значение данного арифметического выражения кратно 12_10
при любом нечётном значении у
. Для найденного значения х
вычислите частное от деления значения арифметического выражения на 12_10
при у = 7
и укажите его в ответе в десятичной системе счисления. Основание системы счисления в ответе указывать не нужно.
Комментарии к решению задачи:
alphabet
, которая содержит все символы алфавита и цифры от 0 до 9 и отсортированы в алфавитном порядке.alphabet
, чтобы удовлетворять 21-ной системе счисления.if
. Мы используем функцию all()
для проверки, удовлетворяют ли все значения y
из списка alphabet[1:21:2]
заданному условию. Значение удовлетворяет условию, если остаток от деления суммы выражений int(f'32{y}{x}A', 21)
и int(f'16{y}18', 21)
на 12 равен 0.if
, выполняется успешно, мы вычисляем значение выражения int(f'32{7}{x}A', 21) + int(f'16{7}18', 21)) // 12
и выводим его на экран.x
, который удовлетворяет заданному условию, мы используем оператор break
, чтобы выйти из цикла for.alphabet = sorted('0123456789QWERTYUIOPASDFGHJKLZXCVBNM')
for x in alphabet[:21]:
if all(
(int(f'32{y}{x}A', 21) + int(f'16{y}18', 21)) % 12 == 0
for y in alphabet[1:21:2]
):
print((int(f'32{7}{x}A', 21) + int(f'16{7}18', 21)) // 12)
break