KM-88|情報Ⅰ 対策問題
令和7年度本試験 第1問 5桁の利用者IDに付けるチェックディジットの生成方法として、図の【生成方法A】【生成方法B】の2種類を考える。これらのチェックディジットでは、1桁の入力ミスは検出できても、2桁の入力ミスは、検出できないことがある。生成方法Bはこの点について多少検出できるように工夫されている。 生成方法Aでは検出できることはないが、生成方法Bでは検出できることがある入力ミスとして、最も適当なものを選べ。

解答・解説を見る
正解: 4
正答
4
問題の整理
2つの生成方法の本質的な違いは「桁の重み」です。
- 方法A: 全桁の重みが1(ただの合計)
- 方法B: 奇数桁の重みが3、偶数桁の重みが1
「方法Aでは絶対に検出できないが、方法Bでは検出できることがある」ミス——つまり「合計は変わらないが、重みつき合計は変わりうる」ミスを探します。
解き方
鍵になるのは数字の順序を入れ替えるミス(転記ミス)です。たとえば「…37…」を「…73…」と書き間違えても、含まれる数字は同じなので合計は変わりません。方法Aのチェックディジットは合計だけで決まるため、順序の入れ替えは原理的に検出不可能です。
では方法Bではどうか。連続する二つの桁は、必ず一方が奇数桁(重み3)・もう一方が偶数桁(重み1)です。3と7を入れ替えると、重みつき合計は「3×3+7」=16 から「7×3+3」=24 へと変わるので、チェックディジットが合わなくなり検出できることがあります。これが正解の選択肢4です。
一方、「奇数桁どうしの順序を逆にする」場合は、どちらも重み3なので重みつき合計も変わらず、方法Bでも検出できません(選択肢3が誤りの理由)。「数字を二つ間違える」系のミスは合計自体が変わりうるので、方法Aでも検出できることがあり、「Aでは検出できることはない」という条件に合いません。
実際のクレジットカード番号の検証(ルーンアルゴリズム)も、この「桁ごとに重みを変えて転記ミスを捕まえる」発想で作られています。
選択肢の確認
1.× 数字自体が変われば合計も変わりうるので、Aでも検出できることがある。
2.× 同上。Aで検出できる場合がある。
3.× 同じ重み(3)どうしの入れ替えはBでも検出できない。
4.○ 合計は不変(Aは万事休す)だが、重み3と1が入れ替わるのでBは検出しうる。
ここだけは覚えよう
順序の入れ替えは「合計」では捕まらない — 桁ごとに重みを変えると転記ミスを検出できる。