第1問 問3
解答
キ:7 ク:3
解説
この問題は チェックディジット(間違いを見つけるための数字) を計算する問題です。
2種類の方法(生成方法Aと生成方法B) を使って計算し、どんなミスが検出できるかを考えます。
1. チェックディジットの計算(キの解説)
問題の利用者IDは「22609」です。
これを チェックディジット(C) に変換するために、生成方法Aと生成方法Bで計算します。
方法Aの計算
- 全部の数字を足す
- 10で割った余り(19 ÷ 10 の余り)を求める
余り 9 - 10から余りを引く
10−9=1
→ 生成方法Aのチェックディジットは「1」 です。
方法Bの計算
利用者ID:「22609」
- 奇数桁(1, 3, 5桁目)を3倍する 「22609」(2 × 3) + (6 × 3) + (9 × 3) = 6 + 18 + 27 = 51
- 偶数桁(2, 4桁目)をそのまま足す「22609」51 + 2 + 0=53
- 10で割った余り(53 ÷ 10 の余り)を求める
余り 3 - 10から余りを引く
10 − 3 = 7
→ 方法Bのチェックディジットは「7」 なので、キの答えは7 となります。
2. どんな間違いを防げる?(クの解説)
問題文では、「方法Aでは見逃すけど、方法Bなら見つけられるミス」を選ぶ必要があります。
方法Bでは、奇数桁に3倍の重みをつける ことで、 「桁を入れ替えたミス」を見つけやすくなっています。
例えば、「22609」の「60」を間違えて「06」にすると…
- 方法Aでは変化なし → 検出できない
- 方法Bでは計算が変わる → 検出できる!
これに当てはまるのは 「連続する2つの桁の数字の順序を逆にするミス」 なので、クの答えは3 となります。
結論
- チェックディジットは入力ミスを防ぐ仕組みである
- 生成方法A は単純な誤入力の検出に有効
- 生成方法B は桁の並び替えミスも検出しやすい(特に 連続する2つの桁の順序を逆にするミス)