14 2027-Анисимов-2
Операнды арифметического выражения записаны в системе счисления с основанием 21.
197x62721 + 634x54221
В записи чисел переменной x обозначена неизвестная цифра из алфавита
21-ричной системы счисления.
Определите наибольшее значение x, при котором значение
данного арифметического выражения кратно 20.
Для найденного x
вычислите частное от деления значения арифметического выражения на 10
и укажите его в ответе в десятичной системе счисления.
Основание системы счисления
указывать не нужно.
Для цифр со значениями от 10 до 20 используются буквы
A—K; x обозначает неизвестную цифру.
Задаём алфавит из 21 символа: цифры 0…9
и буквы A…K (значения 10…20).
Функция to_num подставляет вместо x нужный символ
и переводит запись в десятичное число. Для примера берём x = 12
(это буква C) и считаем первое слагаемое.
DIGITS = "0123456789ABCDEFGHIJK"
def to_num(s, x):
s = s.replace("x", DIGITS[x])
n = 0
for ch in s:
n = n * 21 + DIGITS.index(ch)
return n
x = 12
print(to_num("197x627", x))
Перебираем x от 20 вниз до 0.
Складываем два числа в десятичном виде. Как только сумма кратна 20,
печатаем частное val // 10 и останавливаемся.
При x = 12 ответ — 65173860.
for x in range(20, -1, -1):
val = to_num("197x627", x) + to_num("634x542", x)
if val % 20 == 0:
print(val // 10)
break
Время решения
00:00.00
Нажмите «Пуск», когда начнёте решать
Пробел — пуск и пауза
Поверните телефон
Горизонтальный режим удобнее для таблицы и Python-кода