Розбір завдання C4 (демо ЄДІ 2011)
Розбір завдання C4 (демо ЄДІ 2011)
На вхід програмі подається набір символів, що закінчується точкою (у програмі мовою Бейсик символи можна вводити по одному в рядку, доки не буде введена точка, або зчитувати дані з файлу). Напишіть ефективну, в тому числі і за пам'яттю, програму (вкажіть версію мови програмування, наприклад, Borland Pascal 7.0), яка спочатку визначатиме, чи є в цьому наборі символи, що відповідають десятковим цифрам. Якщо такі символи є, то можна переставити їх так, щоб отримане число було симетричним (читалося однаково як зліва направо, так і праворуч наліво). Провідних нулів у числі не повинно бути, виняток – число 0, запис якого містить рівно один нуль.
Якщо необхідне число скласти неможливо, програма повинна вивести на екран слово “NO”. А якщо можливо, то в першому рядку слід вивести слово “YES”, а у другому – шукане симетричне число. Якщо таких чисел кілька, то програма має виводити максимальне їх. Наприклад, нехай на вхід подаються такі символи: Do not 911 to 09 do. У даному випадку програма повинна вивести YES 91019
Програма читає всі вхідні символи до точки один раз, підраховуючи в масиві, що зберігає 10 цілих чисел, кількість кожної цифри. Самі вхідні символи у своїй не запам'ятовуються. Потім перевіряється – скільки у цьому масиві непарних елементів. Якщо більше за одне, то завдання рішення не має. За наявності рішення спочатку друкується половина наявних цифр 9 (якщо такі є у разі непарного числа цифр – менша половина), потім 8 і т.д. до 0, потім друкується цифра, яка зустрічається у вхідних даних непарне число разів, а потім - половина цифр 0, що залишилася (якщо такі є, ву разі непарного числа цифр – менша половина), 1, і т.д. до 9. Якщо жодних цифр, крім 0, у вхідних даних немає, то завдання має рішення, тільки якщо цей нуль єдиний. Якщо нулів парне число, а ненульова цифра єдина, то рішення немає.
Програма написана мовами:
- Паскаль (середовище розробки Turbo Pascal 7.0),
- Бейсік (середовище розробки Quick Basic 4.5),
- Сі (середовище розробки Borland C++ 3.1),
- Алгоритмічна мова (середовище розробки Кумир 1.9.0).
Навпаки назви мови програмування в дужках містяться посилання на стрибку вихідних файлів і ехе (виконуваних файлів).