14833 - Caesar Cipher   

Description

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

 

Input

第一行:密文字串(長度 1–600,大寫字母 A–Z)

第二行:key 長度(整數,1–20)

第三行:key 整數序列(空格分隔,每個整數 0–25,個數等於 key 長度)

 

Output

印出解密後的明文

Note:

1. 輸出的最後必須要有一個換行符號 (“\n”)

 

Sample Input  Download

Sample Output  Download

Partial Judge Code

14833.c

Partial Judge Header

14833.h

Tags




Discuss