アルゴリズム (全15問中12問目)

No.12

小文字の英字からなる文字列の暗号化を考える。次表で英字を文字番号に変換し,変換後の文字番号について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/image-size:501×97

分類

テクノロジ系 » アルゴリズムとプログラミング » アルゴリズム

正解

解説

最初この問題を見たとき問題文の意味がわからなかったのですが、例をみて理解できました。

答えを得るには暗号化した順番と逆に変換していけばいいのです。

まず結果が、"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」
© 2009-2017 ITパスポート試験ドットコム All Rights Reserved.

Pagetop