fork(1) download
  1. #include <iostream>
  2. #include <cstring>
  3. using namespace std;
  4.  
  5. int main() {
  6. const int MAX_SIZE = 256; // 256 - максимальное кол-во букв по условию + нулевой символ
  7. char *cipher = new char [MAX_SIZE];
  8. cin.getline (cipher,MAX_SIZE);
  9. int k;
  10. cin >> k;
  11. for(int i = 0; i < strlen(cipher); i++){ // Цикл дешифровки выполняется до последней буквы
  12. if(cipher[i] >= 'A' + k) cipher[i] -= k;
  13. else cipher[i] = 'Z' - (k - (cipher[i] - '@')); //cipher[i] - '@' расстояние между i-ым символом и символом 'A', где '@' - символ идущий перед символом 'A'
  14. /* Если полученный символ принадлежит к заглавным латинским буквам, ставим его на место зашифрованного
  15. Если нет, то возвращаемся к символу "Z" и отступаем от него на k минус уже пройденное кол-во символов */
  16. }
  17. cout << cipher;
  18. return 0;
  19. }
Success #stdin #stdout 0s 3416KB
stdin
ZABC
3
stdout
WXYZ