Задача
Юлий Цезарь использовал свой способ шифрования текста. Каждая буква заменялась на следующую по алфавиту через k позиций по кругу. Необходимо по заданной шифровке определить исходный текст.
Входные данные
В первой строке дана шифровка, состоящая из не более чем 255 заглавных латинских букв. Во второй строке число k(1≤k≤10).
Выходные данные
Вывести результат расшифровки.
Тесты
Входные данные | Выходные данные |
XPSE1 | WORD |
ZABC3 | WXYZ |
WURYAD4 | SQNUWZ |
Код программы
Решение
Для решения задачи вводим строки str и str1 и преобразуем их в массив символов (char). Чтобы расшифровать слово, находящееся в строке
s, необходимо заменить каждую букву данной строки на букву, находящуюся на (find—k) позиции строки s1, где s1 — строка, содержащая латинский алфавит, а find — позиция заменяемой буквы в алфавите. В случае если разница find и k меньше нуля, заменяем букву строки s на букву, находящуюся на (26—(k—find)) позиции строки s1, то есть, не считая то количество позиций, которые уже были пройдены от изначального символа до первого символа строки s1. Можно не беспокоиться о том, что символ вернется к концу алфавита более, чем один раз так как условие исключает этот вариант (k≤10 при 26-ти символах латинского алфавита).
Ссылки
Условие задачи на e-olymp
Код решения задачи ideone