Для розшифровки кожну букву слід змістити на позицій назад по колу. Пронумеруємо букви від ('') до ('').
Нехай — поточна буква шифру. Її номер в алфавіті обчислюється як - ''. Щоб виконати зсув назад з урахуванням циклічності алфавіту (перед '' йде ''), віднімемо і візьмемо остачу по модулю . Потім додамо '', щоб отримати ASCII-код розшифрованої букви.
Таким чином, операція дешифрування виглядає наступним чином:
Реалізація алгоритму
Вхідний рядок збережемо в масиві символів .
char s[1000];Читаємо вхідні дані.
gets(s); scanf("%d", &k);Перетворюємо символи рядка згідно з правилом дешифрування.
for (i = 0; i < strlen(s); i++)
s[i] = (((s[i] - 'A') + 26 - k) % 26) + 'A';Виводимо розшифрований текст.
puts(s);Реалізація алгоритму – STL
Читаємо вхідні дані.
cin >> s >> k;Перетворюємо символи рядка згідно з правилом дешифрування.
for (i = 0; i < s.size(); i++)
s[i] = (((s[i] - 'A') + 26 - k) % 26) + 'A';Виводимо розшифрований текст.
cout << s << endl;Python реалізація
Читаємо вхідні дані.
s = input()
k = int(input())Перетворюємо символи рядка згідно з правилом дешифрування.
s = ''.join(chr(((ord(c) - ord('A') - k + 26) % 26) + ord('A'))
for c in s)Виводимо розшифрований текст.
print(s)