回分類題庫
d018: 98年彰雲嘉區第三題
關鍵字: 98年彰雲嘉區複賽

測資點 : 7 | Time Limit : 1000 ms | Memory Limit : 32000 KB
Accepted : 87 Times / 80 Users | Submit : 148 Times / 82 Users | Accepted rate : 98%
題目加入時間 : 2011-09-11 23:25

Content: 简体中文

1854年由英國科學家Sir Charles Wheatstone發明 Playfair加密法,主要是使用5×5 階字元矩陣作輸入與輸出的轉換。此矩陣中,I與J 視為同一字元並假設輸出均為I,則可以將26個英文字排列在矩陣內如下圖:

 

接著,將所要加密的資料,由左而右以兩個為一組;如這兩個字母相同,則在其間插入一字元X,例如 BALLOON其中LL重複出現則插入一個X於兩個L之間。插入後,OO並不會重複,故可以得到新的字串 BA LX LO ON  (插入X);另外注意II,IJ,JI,JJ也視為重複的兩個字,必須變成IXJ。又若最後僅剩單一個字元,也加入X。例如加密的訊息為AMBASSADORSHOT 處理後變成AM BA SX SA DO RS HO TX。

訊息加密的方法為:

  1. 若所使用的兩個字在矩陣上的同一列,則各用其右邊一格的字元來取代它們(注意!我們把第一個字元當作是最後一個字元的右邊字元);例如:AM→MN,SA→AM,SY→AS。
  2. 若所使用的兩個字在矩陣上的同一行,則各用其下面一格的字元來取代它們(注意!我們把第一個字元當作是最後一個字元的下方字元);例如:BA→UD,DO→BA,TX→FE。
  3. 若所使用的兩個字在矩陣上不同行、不同列;則假設此兩字所在位置為矩形的兩個對角頂點,以矩形另兩個頂點且位於同一行的字分別取代這兩個字。例如:SX→QN,RS→MP,HO→ID。如下圖

 

 請設計一個程式,可以將鍵盤輸入的英文字串以上面的Playfair法加密並輸出。

Input:

輸入一行只有英文大寫字母的字串。

Output:

請輸出加密後的字串。

Sample Input:help

若題目沒有特別說明,則應該以多測資的方式讀取,若不知如何讀取請參考 a001 的範例程式。
輸入1:
AMBASSADORSHOT

輸入2:
ABCDEFGHIJ

Sample Output :

輸出1:
MNUDQNAMBAMPIDFE

輸出2:
DURBNXPKZEZE

Hint :

Author :

98年彰雲嘉區複賽 (管理員:sagit)

  Solve it!   Status Forum