アルゴリズムとプログラミング(全23問中21問目)
No.21解説へ
小文字の英字からなる文字列の暗号化を考える。次表で英字を文字番号に変換し,変換後の文字番号について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”であるとき,元の文字列はどれか。
例 fax→6,1,24→6+1,1+2,24+3→7,3,27→7,3,1→gca
この手続で暗号化した結果が“tmb”であるとき,元の文字列はどれか。
出典:平成21年秋期 問62
- 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」
まず結果が、"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」
広告