Задание
Багги мнит себя Гаем Юлием Цезарем и любит громогласно его цитировать при каждом удобном случае, выдавая мысли Цезаря за свои. Проги пошутил над Багги и зашифровал в стиле Цезаря список цитат, которыми пользуется Багги. Багги в панике. Если хотите, помогите ему расшифровать известную цитату :
UDMHUHCHUHBH
Напишите программу, которая для вышеприведенного шифртекста выводит соответствующий открытый текст.
Код
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
#include <iostream> #include <string> using namespace std; int main() { string str; cin >> str; for(int i = 0 ; i < str.length(); i++){ if(str[i] == 'Z') str[i] = 'A'; else str[i]++; } cout << str; return 0; } |
Решение
Шифр Цезаря так же известен как шифр сдвига. Каждая буква сдвигается в алфавите на константу влево или вправо по модулю длины алфавита . В нашем случае зашифрованное и расшифрованное сообщение будет состоять только из букв (в условии не сказано ничего про сам алфавит).
Ниже пример шифрования методом сдвига (в данном случае на 3 единицы вправо)
Нам остается только подобрать ключ. Простым перебором получаем что зашифрованное сообщение было получено сдвигом всех букв исходного сообщения на единицу влево.
Ну что еще сказать?
Пришёл, увидел, победил!Veni, vidi, vici!