Ребус, системы счисления (Python)

Заменить буквы цифрами так, чтобы стало верным равенство.

  • условие
  • решение

При каком основании системы счисления имеет решение следующий ребус:

Можно решить путём рассуждений, но мы напишем программу.

Пусть, основание системы счисления n.

Используем развёрнутую форму записи числа для перевода всех чисел в десятичную систему счисления. Учтём, что n1 = n, a n0 = 1.

Тогда, первое число:

W * n3 + Z * n2 + Y * n1 + X * n0 = W * n3 + Z * n2 + Y * n + X

второе число:

W * n4 + Z * n3 + X * n2 + Y * n1 + X * n0 = W * n4 + Z * n3 + X * n2 + Y * n + X

третье число:

Y * n4 + X * n3 + W * n2 + Z * n1 + X * n0 = Y * n4 + X * n3 + W * n2 + Z * n1 + X

Основание системы счисления – не меньше 2. Предположим, что оно меньше 20. Если решения не найдётся, изменим это число.

Искать будем набор, в котором все числа одновременно не могут быть равны нулю. Этот вариант игнорируем, продолжая поиск.

Для n4, n3, n2 введём соответственно переменные n4, n3, n2.

Программа может выглядеть так:

ребус_1

В результате выводим основание системы счисления и найденные значения:

ребус_2

Условие задачи из архива олимпиады по информатике и компьютерной безопасности