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

ITパスポート 2010年 春期 67


問題文

表のA列とB列に0から9までの数字のすべての組合せが入っており、全部で100行ある。表からA列の値がB列の値以下である行をすべて取り除く。残りは何行あるか。
ITパスポート 2010年 春期  問67の問題画像

選択肢

40
45(正解)
50
55

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

表の組合せ(0〜9)の行を削る問題【ITパスポート 解説】

正解の理由

表にはA列とB列のすべての組合せ、すなわち から までの数字を使った順序付けられたペアが合計で 行あります。
「A の値が B の値以下である行(A ≤ B)」をすべて取り除くと、残るのは「A の値が B の値より大きい行(A > B)」だけです。
各 A に対して B が取りうる値で A > B となる個数を足し合わせると、 のときは のときは 、…、 のときは となり、合計は です。
したがって残りは45行であり、選択肢のうち が正しい答えです。

解法ステップ

  1. 問題が扱う集合サイズを確認:A,Bともに の10個の値を取る → 全組合せは 行。
  2. 残したい条件を明確にする:「A > B」の行を残す(A ≤ B を取り除く)。
  3. A の各値ごとに B の取り得る値の数を数える:
    • A=0 のとき B は 0 未満の値がない → 0行
    • A=1 のとき B は {0} → 1行
    • A=9 のとき B は {0,1,...,8} → 9行
  4. これらを足し合わせる:
    別の見方として、一般に n 個の値(ここでは n=10)を使う場合、A>B の組は で表せ、 となる。

選択肢別の誤答解説

  • ア: 40
    何らかの数え落とし(例えば A=9 のとき 9 を 8 と誤って数えた等)による不足。正しくは 0〜9 の合計で45となるため 40 は合いません。
  • : 45
    各 A に対する B の取り得る数 を足した合計 45 が正解です。
  • ウ: 50
    「全体の半分」として直感的に 100÷2=50 としてしまった誤り。A>B と A<B は対称で各45行、等しい場合(A=B)が10行あるため、半分にはなりません。
  • エ: 55
    逆に「A ≤ B を取り除く」と読み違えて A ≥ B を残す(または A<B を残す)など、条件を反対に解釈した結果の数字に見えます。実際、A ≤ B の行は残る数ではなく取り除かれる数で、A ≤ B の合計は 55(=100−45)ですが、問題は取り除いた後に「残る」行を問うているため 55 は誤りです。

よくある誤解

  • A と B の関係を「A ≥ B を取り除く」と誤読する。問題文の向き(<= vs >=)を確認することが重要です。
  • 表を「順不同の組(組合せ)」と勘違いし、(10 choose 2) = 45 や半分の考えを乱用してしまう。ここでは順序(A と B の列名)がある「順序付けられた組」です。ただし結果的に A>B の数は組合せの数と一致します(理由は下に説明)。
  • 直感で「半分」や「数直線の対称性」を当てはめてしまう。A=B が10個ある点を見落とすと 50 と誤答しやすいです。

補足コラム

視覚的に考えるとわかりやすいです。10行×10列のマス目(Aを縦軸、Bを横軸)を想像してください。対角線(左上から右下)上のマスは A=B の10個です。対角線より下側(A>B)の三角形部分のマスが残る部分で、そのマスの個数は三角数(triangular number)と呼ばれる に相当します。n=10 のときは 45 です。
小さい例で試すと確かめやすいです。A,B が 0〜2 の場合、全9行で A>B の組は (1,0),(2,0),(2,1) の3つ。で合います。
簡単な計算確認用の Python(例)
count = sum(1 for a in range(10) for b in range(10) if a > b)
print(count)  # 45

FAQ

Q. なぜ公式が n(n-1)/2 になるのですか?
A. あるサイズ n の集合から「順序を考えずに2つ選ぶ組合せ」は です。ここでは A と B の値が異なるペアを向き(どちらが大きいか)で分けると、A>B の向きだけが残るのでちょうどその組合せの半分、あるいは直接 と数えることと同値です。
Q. 「A < B」と「A > B」はいつも同じ数になりますか?
A. はい。対称性により同じ数になります。ただし A=B の場合が残るので、全体を単純に半分にするわけではありません。今回の例では A=B が 10 個あります。
Q. 値の範囲が 0〜9 でなく 1〜10 の場合は?
A. 取り扱いは同じです。値の個数が n = 10 であれば答えはやはり です。値の最小が何かは結果に影響しません(個数 n が大事)。

関連キーワード: 場合の数、組合せ、三角数、二次元表、等差数列、可視化による理解
← 前の問題へこの年度をクイズで解く次の問題へ →
戦国ITクイズ機能

\ せっかくなら /

ITパスポート
クイズ形式で学習しませんか?

クイズ画面へ遷移する

すぐに利用可能!

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

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