Задача A. Сумма с перестановкой

Автор:Методическая комиссия по информатике   Ограничение времени:2 сек
Входной файл:input.txt   Ограничение памяти:64 Мб
Выходной файл:output.txt  
Максимальный балл:50  

Условие

Заданы три числа: a, b, c. Необходимо выяснить, существуют ли такие числа x и y, что:

  1. x получается перестановкой цифр числа a;
  2. y получается перестановкой цифр числа b;
  3. x и y не содержат лидирующих нулей;
  4. x + y = c.

Формат входного файла

Входной файл содержит целые числа a b c.

Формат выходного файла

Если искомые числа существуют, вывести в первую строку выходного файла слово YES, а во вторую — числа x y, разделённые пробелом. В противном случае вывести слово NO.

Ограничения

1 < a, b, c < 109

Примеры тестов

Входной файл (input.txt) Выходной файл (output.txt)
1
12 31 25
YES
12 13
2
12 31 26
NO

Разбор

Основная идея решения основана на переборе всех перестановок цифр числа a. Генерировать все перестановки можно простой рекурсивной процедурой.

Обозначим очередное полученное число через ap. Теперь, для того, чтобы найти число bp, которое необходимо получить перестановкой цифр числа b, достаточно вычесть из числа c число ap.

Для проверки возможности перестановки цифр числа b таким образом, чтобы получилось число bp, проверим на равенство мультимножества цифр указанных чисел. Это можно сделать, например, посчитав количество нулей, единиц, двоек, , девяток в каждом из сравниваемых чисел.

Вычислительная сложность алгоритма: O(n!(m + n)), где m — количество цифр в записи числа a, а n — количество цифр в записи числа b.


0.071s 0.009s 13