Условие
Решение
Для поиска ответа напишем программу:
Переберем все значения y.
#начало фрагмента
for y in range (9, 18):
#конец фрагмента
Разберемся с выражением x — это цифра в обоих слагаемых. А так, как она одинаковая для них, опираться необходимо на систему счисления, чтобы случайно не подставить цифру, которой в системе счисления нет. То есть x должен быть меньше y на один.
Переберем все значения x.
#начало фрагмента
for x in range (y):
#конец фрагмента
Соберем каждое слагаемое отдельно. В циклах мы будем перебирать числа, то функцию int() использовать нельзя, так как значения в десятичной системе счисления будут сильно отличаться от тех, которые должны быть на самом деле. Напишем перевод в десятичную систему счисления вручную.
Пусть a и b будут первым и вторым слагаемыми.
#начало фрагмента
a = 5 * 18**3 + x * 18**2 + y * 18 + 10
b = 1 * y**3 + 8 * y**2 + x * y + 7
#конец фрагмента
Полученные суммы будем добавлять в множество, так как при получении повторных значений они будут игнорироваться.
#начало фрагмента
sp = set()
#разрыв
sp.add(a + b)
#конец фрагмента
Выведем длину множества на экран.
#начало фрагмента
print(len(sp))
#конец фрагмента
Листинг программы
sp = set()
for y in range(9, 18):
for x in range(y):
a = 5 * 18**3 + x * 18**2 + y * 18 + 10
b = 1 * y**3 + 8 * y**2 + x * y + 7
sp.add(a + b)
print(len(sp))