| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > Центр помощи > [Delphi]Расшифровка |
| Автор: DeadLine 5.1.2007, 19:09 |
| 21. Расшифровка (информатика) Компания по защите интеллектуальной собственности решила повысить уровень защищенности своих операционных систем путем шифрования всех сообщений, передаваемых внутри ее локальных сетей. Любое допустимое в компании сообщение представляет собой строку S = s1s2…sn, состоящую исключительно из букв латинского алфавита. Шифрование сообщения осуществляется в K фаз. На каждой фазе строка S заменяется строкой, в которой сначала располагаются все буквы строки S, стоявшие на позициях с номерами, являющимися простыми числами (первый блок), а затем – все остальные буквы (второй блок). Напомним, что число называется простым, если оно – натуральное и имеет ровно два различных натуральных делителя. Относительный порядок букв в каждом из двух блоков остается неизменным. Например, строка S = abcdefgh на первой фазе шифруется в строку S = bcegadfh. Если осуществляется вторая фаза шифрования, то строка примет вид S = ceafbgdh. После передачи зашифрованного сообщения по сети оно должно быть дешифровано, чтобы получатель смог прочитать исходную запись. Требуется написать программу, осуществляющую дешифрование пришедшей по сети строки. Технические требования: Ввод данных из текстового файла input.txt. Вывод данных в текстовый файл output.txt. Ограничение по времени тестирования: 1 секунда на один тест Формат входных данных: Первая строка содержит натуральное число K (K ≤ 100). Далее - строка, которая содержит сообщение S после K фаз шифрования, состоящая из n ( 1 ≤ n ≤ 250) букв латинского алфавита. Формат выходных данных: В файл вывести только одну дешифрованную строку S. Пример: Входной файл Выходной файл 2 CEAFBGDH ABCDEFGH 1 BAAAACB ABACABA |