(IP)R1年秋 問70

大文字の英字から成る文字列の暗号化を考える。暗号化の手順と例は次のとおりである。この手順で暗号化した結果が“EGE”であるとき,元の文字列はどれか。

暗号化の手順 例 ”FAX”の暗号化
処理前 処理後
1 表から英字を文字番号に変換する。 FAX 5,0,23
2 1文字目に1、2文字目に2、n文字目にnを加算する。 5,0,23 6,2,26
3 26で割った余りを新たな文字番号とする。 6,2,26 6,2,0
4 表から文字番号を英字に変換する。 6,2,0 GCA

 

英字 A B C D E F G H I J K L M
文字番号 0 1 2 3 4 5 6 7 8 9 10 11 12
英字 N O P Q R S T U V W X Y Z
文字番号 13 14 15 16 17 18 19 20 21 22 23 24 25

 

 BED

 DEB

 FIH

 HIF

解説を読む

正解:イ

解説:
例題の”FAX”と逆の手順で復号します。

復号化の手順 “EGE”の復号
処理前 処理後
1 表から文字番号を英字に変換する。 EGE 4,6,4
2 0に26を掛け数値を加え新たな文字番号とする。 4,6,4 4,6,4
3 1文字目に1、2文字目に2、n文字目にnを減算する。 4,6,4 3,4,1
4 表から英字を文字番号に変換する。 3,4,1 DEB

上記のとおり暗号化された文字は”DEB”となるのでイが正解です。

2の手順の理解が少し難しいかもしれません。暗号化手順の3で行われている「26で割った余り」を逆の手順にする必要があります。

26で割った際に余りが「4,6,4」になるには商が0の時は「4,6,4」となり、商が1の時には「30,32,30」となります。3の手順でそれぞれの桁から1~3を減算すると商が0の場合は「3,4,1」となり、商が1の場合は「29,30,27」となります。文字番号は25までしか存在しないことから商が1以上になることはないため商が0の時の値で進めることが可能です。

一応、理屈の上では上記のとおりですが実際の問題を解いている際には商を0の過程で上記のとおりに復号し、該当するものがない場合には商を1として復号しなおすようにすると良いかもしれません。

解説を閉じる

コメント