Условие
Операнды арифметического выражения записаны в системе счисления с различными основаниями:
2xx371 + 48х473 + 7х6578 – 3xy981
В записи чисел x и y обозначают неизвестные цифры из алфавита соответствующей системы счисления. Определите все пары (x, y), при которых значение данного арифметического выражения положительно и кратно 1234. В ответе запишите сумму всех найденных значений x и y.
Решение
Для того чтобы найти сумму всех найденных значений x и y рассмотрим все возможные выражения. Цифра x встречается в каждом числе, следовательно выберем число с минимальным количественным показателем системы счисления. Это позволит определить какой максимальной цифрой может быть x. Система счисления с показателем 71 меньшая, а значит перевод x в десятичную систему счисления максимально даст значение равное 70.
Цифра y встречается только один раз. Показатель системы счисления — 81, а значит при переводе в десятичную y максимально будет равен 80.
После того, как стали известны максимальные значения x и y мы можем запустить цикл подстановки значений в развернутую форму перевода из различных систем счисления в десятичную.
#начало фрагмента
for x in range(71):
for y in range(81):
#конец фрагмента
Для удобства обозначим каждое число своей переменной: a, b, c и d. Запишем развернутую форму перевода числа для каждой переменной
Переменная a.
#начало фрагмента
a = 2 * 71**3 + x * 71**2 + x * 71 + 3
#конец фрагмента
Переменная b.
#начало фрагмента
b = 4 * 73**3 + 8 * 73**2 + x * 73 + 4
#конец фрагмента
Переменная c.
#начало фрагмента
c = 7 * 78**3 + x * 78**2 + 6 * 78 + 5
#конец фрагмента
Переменная d.
#начало фрагмента
d = 3 * 81**3 + x * 81**2 + y * 81 + 9
#конец фрагмента
Найдем значение выражения и запишем его в переменную e.
#начало фрагмента
e = a + b + c - d
#конец фрагмента
В случае выполнения условия прибавим значения x и y к ответу.
#начало фрагмента
if (e > 0) and (e % 1234 == 0):
count += x + y
#конец фрагмента
Выведем ответ на экран.
#начало фрагмента
print(count)
#конец фрагмента
Листинг программы
count = 0
for x in range(71):
for y in range(81):
a = 2 * 71**3 + x * 71**2 + x * 71 + 3
b = 4 * 73**3 + 8 * 73**2 + x * 73 + 4
c = 7 * 78**3 + x * 78**2 + 6 * 78 + 5
d = 3 * 81**3 + x * 81**2 + y * 81 + 9
e = a + b + c - d
if (e > 0) and (e % 1234 == 0):
count += x + y
print(count)