e-olymp 2164. Шифр Юлия

Задача

Юлий Цезарь использовал свой способ шифрования текста. Каждая буква заменялась на следующую по алфавиту через $k$ позиций по кругу. Необходимо по заданной шифровке определить исходный текст.

Входные данные

В первой строке дана шифровка, состоящая из не более чем $255$ заглавных латинских букв. Во второй строке число $k \left ( 1 \leq k \leq 10 \right ).$

Выходные данные

Вывести результат расшифровки.

Тесты

Входные данные Выходные данные
$XPSE \\ 1$ $WORD$
$ZABC \\ 3$ $WXYZ$
$WURYAD \\ 4$ $SQNUWZ$

Код программы

Решение

Для решения задачи вводим строки $str$ и $str1$ и преобразуем их в массив символов $(char)$. Чтобы расшифровать слово, находящееся в строке
$s$, необходимо заменить каждую букву данной строки на букву, находящуюся на $(find — k)$ позиции строки $s1$, где $s1$ — строка, содержащая латинский алфавит, а $find$ — позиция заменяемой буквы в алфавите. В случае если разница $find$ и $k$ меньше нуля, заменяем букву строки $s$ на букву, находящуюся на $(26 — (k — find))$ позиции строки $s1$, то есть, не считая то количество позиций, которые уже были пройдены от изначального символа до первого символа строки $s1$. Можно не беспокоиться о том, что символ вернется к концу алфавита более, чем один раз так как условие исключает этот вариант ($ k \leq 10$ при 26-ти символах латинского алфавита).

Ссылки

Условие задачи на e-olymp

Код решения задачи ideone

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *