Caesar Cipher 是一種將字母依照固定位移量進行加密的方式。本題提供一串密文 ciphertext 以及一組數字序列 shift key。
解密方式如下:
每一個字使用對應序列中的數字進行 左位移(解密)。
shift key 的長度可能比 ciphertext 短,需要 循環使用。
字元只有 A–Z(大寫),位移時需循環,例如:
A 左移 1 → Z
C 左移 3 → Z
Methods:
void decrypt(int textLength, char *textPtr, int keyLength, int key[])
使用 key[] 內的位移量,循環解密 ciphertext
直接在 textPtr 指向的字串上修改內容(就地解密)
textLength 為密文長度
位移規則提醒:
如果 ciphertext[i] 是字母 C,key 為 5:
C → (C - 'A' = 2)
2 - 5 = -3
(-3 + 26) % 26 = 23
23 + 'A' = X
解密範例:
密文:H E L L O Z
key循環:3 1 4 3 1 4
解密後:
H 左移 3 → E
E 左移 1 → D
L 左移 4 → H
L 左移 3 → I
O 左移 1 → N
Z 左移 4 → V
第一行:密文字串(長度 1–600,大寫字母 A–Z)
第二行:key 長度(整數,1–20)
第三行:key 整數序列(空格分隔,每個整數 0–25,個數等於 key 長度)
印出解密後的明文
Note:
1. 輸出的最後必須要有一個換行符號 (“\n”)