А если возможно, то в первой строке следует вывести слово «YES», а во
Условие
На вход программе подается набор символов, заканчивающийся точкой (в программе на языке Бейсик символы можно вводить по одному в строке, пока не будет введена точка, или считывать данные из файла). Напишите эффективную, в том числе и по используемой памяти, программу (укажите используемую версию языка программирования, например, Borland Pascal 7.0), которая сначала будет определять, есть ли в этом наборе символы, соответствующие десятичным цифрам. Если такие символы есть, то можно ли переставить их так, чтобы полученное число было симметричным (читалось одинаково как слева направо, так и справа налево). Ведущих нулей в числе быть не должно, исключение - число 0, запись которого содержит ровно один ноль.
Если требуемое число составить невозможно, то программа должна вывести на экран слово «NO». А если возможно, то в первой строке следует вывести слово «YES», а во второй - искомое симметричное число. Если таких чисел несколько, то программа должна выводить максимальное из них. Например, пусть на вход подаются следующие символы:Do not 911 to 09 do.В данном случае программа должна вывестиYES91019
Формат задания
Решение по шагам
Как рассуждать
Решение. Программа читает все входные символы до точки один раз, подсчитывая в массиве, хранящем 10 целых чисел, количество каждой из цифр. Сами входные символы при этом не запоминаются. Затем проверяется — сколько в этом массиве нечетных элементов. Если больше одного, то задача решения не имеет. При наличии решения сначала печатается половина имеющихся цифр 9 (если таковые имеются, в случае нечетного числа цифр — меньшая половина), затем 8 и т. д. до 0, потом печатается цифра, которая встречается во входных данных нечетное число раз, а затем — оставшаяся половина цифр 0 (если таковые имеются, в случае нечетного числа цифр — меньшая половина), 1, и т. д. до
Осталось ещё 2 шага
Если никаких цифр, кроме 0, во входных данных…
then f := true;if (k > 1)or not f then…
Бесплатно · займёт минуту