Присоединиться

11 класс·высокий уровень

А если возможно, то в первой строке следует вывести слово «YES», а во

Условие

На вход программе подается набор символов, заканчивающийся точкой (в программе на языке Бейсик символы можно вводить по одному в строке, пока не будет введена точка, или считывать данные из файла). Напишите эффективную, в том числе и по используемой памяти, программу (укажите используемую версию языка программирования, например, Borland Pascal 7.0), которая сначала будет определять, есть ли в этом наборе символы, соответствующие десятичным цифрам. Если такие символы есть, то можно ли переставить их так, чтобы полученное число было симметричным (читалось одинаково как слева направо, так и справа налево). Ведущих нулей в числе быть не должно, исключение - число 0, запись которого содержит ровно один ноль.

Если требуемое число составить невозможно, то программа должна вывести на экран слово «NO». А если возможно, то в первой строке следует вывести слово «YES», а во второй - искомое симметричное число. Если таких чисел несколько, то программа должна выводить максимальное из них. Например, пусть на вход подаются следующие символы:Do not 911 to 09 do.В данном случае программа должна вывестиYES91019

Формат задания

Развёрнутый ответ: короткого ответа здесь нет — оценивается само рассуждение. Разбор откроется после входа.

Решение по шагам

  1. Как рассуждать

    Решение. Программа читает все входные символы до точки один раз, подсчитывая в массиве, хранящем 10 целых чисел, количество каждой из цифр. Сами входные символы при этом не запоминаются. Затем проверяется — сколько в этом массиве нечетных элементов. Если больше одного, то задача решения не имеет. При наличии решения сначала печатается половина имеющихся цифр 9 (если таковые имеются, в случае нечетного числа цифр — меньшая половина), затем 8 и т. д. до 0, потом печатается цифра, которая встречается во входных данных нечетное число раз, а затем — оставшаяся половина цифр 0 (если таковые имеются, в случае нечетного числа цифр — меньшая половина), 1, и т. д. до

Осталось ещё 2 шага

  1. Если никаких цифр, кроме 0, во входных данных…

  2. then f := true;if (k > 1)or not f then…

Получить полное решение

Бесплатно · займёт минуту

Другие задачи по теме «Обработка символьных строк»

А если возможно, то в первой строке следует вывести слово «YES», а во — решение с объяснением | Lom Ai