Это аналитическая задача. Такие задачи не решаются перебором.
Нужно набрать a = 90 /3 = 30 произведением, а b = 37 - 24 = 13 - сложением остатка от деления на основание системы счисления, которое меняется по формуле w = 11 - w - из которой следует, что основания чередуются между {3, 8}.
Число 30 можно разложить только на 3 * 5 * 2, поскольку a это произведение чисел, то все остальные числа должны быть равны 1.
Числа 3 и 5 не могут быть в системе счисления с основанием 3. Получается, что 3 и 5 стоят через одно число, которое есть в СС с основанием 3, число 2 как раз подходит для этого. Получается, что старшие разряды числа выглядят 523.... Теперь, чтобы d = 13, нужно к нему прибавлять все числа, меньшие 5. Получается, что у нас уже есть числа 2 и 3, тогда из единиц нужно набрать 13 - 2 - 3 = 8 единиц. У нас получается 3 + 8 = 11 разрядов.
Но если 3 * 2, то мы получим 6. Тогда у нас будет 2 числа (6 и 5), которые больше 5 и счетчик b их не учтет. Тогда нам нужно добрать уже 13 единиц. Получается следующее:
6 1 5 1 1 1 1 1 1 1 1 1 1 1 1
8 3 8 3 8 3 8 3 8 3 8 3 8 3 8
Теперь нужно получить десятичное число. Общая идея заключается в том, что целочисленное деление можно представить как k * C + d, где k - целое число, C - основание системы счисления, а d - остаток от деления.
Например, чтобы получить десятичное число для числа 615, записанного в СС с плавающим основанием (838), нужно (6 * 3 + 1) * 8 + 5 = 157.
Чтобы не ошибиться, пишем простенький код для перевода числа:
s = "615" + ("1" * 12)
x = 6
w = 3
for i in range(1, len(s)):
d = int(s[ i])
x = x * w + d
w = 11 - w
print("target", x) #30077946657
Теперь проверяем получившееся число:
a = 3
b = 24
w = 8
while x > 0:
d = x % w
number = str(d) + number
a *= d
if d < 5:
b += d
x //= w
w = 11 - w
print("a, b:", a, b) # a, b 90 37
В итоге правильный ответ 30077946657, а в ответах к заданию указано 46246689, что является ошибкой, потому что получившееся число больше, указанного в ответах (нужно найти максимальное число), а в ответе видимо не учли вариант с 6 и 5 и взяли 5, 3, 2.