戦国IT - 情報処理技術者試験の過去問対策サイト
ブログお知らせお問い合わせ料金プラン

基本情報技術者 2013年 秋期 午前(科目A)03


問題文

4桁の整数から、次の方法によって検査数字(チェックディジット)を計算したところ、となった。, , のとき, の値は幾らか。ここで、mod(, )は、で割った余りとする。    検査数字:

選択肢

0
2
4(正解)
6

🔒 解説は解答すると表示されます

加重和によるチェック桁【午前解説】

正解の理由

検査数字の計算式は です。与えられた値を代入すると既知の部分は で合計 となります。したがって )となり、 から です。ここで千の位 は1〜9の一桁整数なので可能な値は のみです。よって正しい選択肢は です。

解法ステップ

  1. 与えられた各桁の重み付き積を計算する:
  2. それらを足して既知部分の和 を得る。
  3. 式を整理して とする( のため)。
  4. を満たす を千の位の範囲 で探し、 を決定する。

選択肢別の誤答解説

  • ア: 0 — を代入すると合計は となり にならない。また千の位が0だと4桁の整数にならない。
  • イ: 2 — のとき合計は にならない。
  • : 4 — のとき合計は で条件を満たす(かつ千の位の範囲内)。
  • エ: 6 — のとき合計は にならない。

よくある誤解

  • 千の位を含む最上位桁は 0 〜 9 と誤認するケース:4桁整数の千の位 は 1〜9 の範囲である点を忘れない。
  • 既知部分の和を簡略化せずそのまま計算ミスする:重み付き和を先に合算してから modulo を取ると楽。
  • mod 演算の性質()を使わないため計算が冗長になる。

補足コラム

一般化すると、既知の桁部分の重み付き和を とすると で求められます。ただし千の位の取りうる値が に制限されるため、求めた剰余が 0 の場合は有効な は存在しません(剰余が 1〜9 の場合は一意に決まる)。小さなプログラム例:
def find_N1(N2, N3, N4, C):
    S = N2*2 + N3*3 + N4*4
    residue = (C - (S % 10)) % 10
    if 1 <= residue <= 9:
        return residue
    return None  # 有効な千の位なし

print(find_N1(7,6,2,4))  # 出力 4

FAQ

Q: 千の位が0でもよいのでは?
A: 4桁の整数では千の位は 1〜9 の一桁整数です。0だと 4桁でなくなるため除外します。
Q: 剰余が0になったらどうする?
A: その場合 となりますが千の位の範囲に 0 は含まれないため、有効な解は存在しません。
Q: 重みが変われば解法は変わるか?
A: アルゴリズム自体は同じです。既知部分の重み付き和を求め、 の重み分を整理して modulo で解きます。

関連キーワード: チェックディジット、加重和、剰余演算、モジュロ演算、千の位
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

基本情報技術者
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

©︎2026 情報処理技術者試験対策アプリ

このサイトについてブログプライバシーポリシー利用規約特商法表記開発者について