平成21年秋期試験問題 問62

小文字の英字からなる文字列の暗号化を考える。次表で英字を文字番号に変換し,変換後の文字番号について1文字目分には1を,2文字目分には2を,…,n文字目分にはnを加える。それぞれの数を26で割った余りを新たに文字番号とみなし,表から対応する英字に変換する。

 例 fax→6,1,24→6+1,1+2,24+3→7,3,27→7,3,1→gca

この手続で暗号化した結果が“tmb”であるとき,元の文字列はどれか。
62.gif

  • she
  • shy
  • ski
  • sky
正解 問題へ
分野:テクノロジ系
中分類:アルゴリズムとプログラミング
小分類:アルゴリズムとプログラミング
解説
答えを得るには暗号化した順番と逆に変換していくことになります。

まず結果が、"tmb"なので表を見て数値化すると「20, 13, 2」です。

この数値が26で割った余りということです。
表をみると最も数値の大きくなる[z(26)]に文字順で最も大きい「3」をたしても29にしかならないので、「20」と「13」についてはそのままということになります。

「2」については、3文字目にあたるため「3」が加算されているはずです。したがって、この「2」は 28÷26 の余りだと考えることができます。

つまり、26で割る前の数値は「20, 13, 28」ということです。

これらの数値から、文字順によって加算された数を引きます。

 「20-1, 13-2, 28-3」→「19, 11, 25」

このようにして計算された「19, 11, 25」を対応する英字に戻すと、答えの「sky」が導かれます。

 「19, 11, 25」→「s, k, y」

Pagetop