1521
Комментарий:
|
← Версия 3 от 2023-01-10 15:34:57 ⇥
2541
|
Удаления помечены так. | Добавления помечены так. |
Строка 24: | Строка 24: |
Спойлер: {{{#!wiki comment Я решал задачу рекурсивно по `n`. Для каждого `n` делал предположение относительно соответствия `n`-й буквы одной из оставшихся оставшимся цифр (если буква уже встречалась, значит, в данном месте выбора нет). Затем складывал числовые «хвосты» слагаемых и проверял совпадение с числовым «хвостом» суммы (с точностью до ''предыдущей цифры''). Если совпадения нет, предположение неверно, если есть, можно разбирать случай для `n+1` и оставшихся цифр. || || Ч,,11,, || И,,9,, || С,,6,, || Л,,3,, || О,,0,, || || + || || || Е,,7,, || Щ,,4,, || Е,,1,, || || ||С,,12,, || У,,10,, || М,,8,, || М,,5,, || А,,2,, || }}} |
Требуется расшифровать запись сложения двух чисел, в котором цифры заменены буквами, причем разные цифры заменены разными буквами, одинаковые - одинаковыми. Предполагается, что исходное равенство верно и записано по обычным правилам арифметики. В частности, в записи числа первая слева цифра не является цифрой 0; используется десятичная система счисления. Ввести ребус в формате ЧИСЛО+ЕЩЕ=СУММА, вывести в столбик все решения в строковом лексикографическом порядке.
ЧИСЛО+ЕЩЕ=СУММА
29348+767=30115 29368+747=30115 59638+474=60112 59678+434=60112 69714+838=70552 69734+818=70552
Сначала я, конечно, написал решение «в лоб», которое (после ввода и подготовки данных) начиналось строкой
Этого достаточно, чтобы любой пример решался менее, чем за минуту, но наши лимиты намного жёстче.
Спойлер: