Условие: № 5632 (Уровень: Средний)
(М. Ишимов) Операнды арифметического выражения записаны в системе счисления с основанием 21.
32xyA_{21} + 16y18_{21}
В записи чисел переменными х и у обозначены две неизвестные цифры из алфавита 21-ричной системы счисления. Определите наименьшее значение х, при котором значение данного арифметического выражения кратно 12_10 при любом нечётном значении у. Для найденного значения х вычислите частное от деления значения арифметического выражения на 12_10 при у = 7 и укажите его в ответе в десятичной системе счисления. Основание системы счисления в ответе указывать не нужно.
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
Комментарии к решению задачи:
- Создаем строку alphabet, которая содержит все символы алфавита и цифры от 0 до 9 и отсортированы в алфавитном порядке.
- В цикле for перебираем первые 21 символов списка 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.