基本情報技術者試験の令和7年度の公開問題(科目B)を解こう。
今回のテーマは、「理論度数」である。
令和7年度 基本情報技術者試験 科目 B 公開問題 問5


正解:オ
この問題は、一見すると「統計学(理論度数)?」と身構えてしまうが、実はアルゴリズム(擬似言語)を1行ずつ読み解くだけで解ける問題である。
問題の概要をつかむ
この問題は、表1の「実測値」を元に、表2の「理論度数」を計算するプログラムの動きを追いかけるものである。
表1:実際の集計結果(data)
まず、計算の元になる表1の合計値を出しておこう。これが計算のヒントになる。
| 病気Xにかからなかった | 病気Xにかかった | 合計(行の和) | |
| 予防接種あり | 82 | 6 | 88 |
| 予防接種なし | 58 | 8 | 66 |
| 合計(列の和) | 140 | 14 | 154 (総計) |
プログラムの計算式を読み解く
プログラムの中核は、この1行になる。
result[r, c] ← (dataの行番号rの要素の和) × (dataの列番号cの要素の和) ÷ t
ここで、$t$ は「dataの要素の和」なので、全体の合計である 154 である。
つまり、計算式はこうなる。
$$\text{理論度数} = \frac{(\text{その行の合計}) \times (\text{その列の合計})}{\text{全体の合計}}$$
実際に計算してみよう!
空欄の a と b を計算していこう。
空欄 a の計算
a は「1行目・1列目」の位置にある。
- 1行目の合計:88
- 1列目の合計:140
- 全体の合計 ($t$):154
$$a = (88 \times 140) \div 154$$
$88$ と $154$ はどちらも $22$ で割れる。
($88 \div 22 = 4, 154 \div 22 = 7$)
※電卓の使用が認められない試験のため工夫が必要。
$$a = (4 \times 140) \div 7 = 4 \times 20 = \mathbf{80}$$
空欄 b の計算
b は「2行目・2列目」の位置にある。
- 2行目の合計:66
- 2列目の合計:14
- 全体の合計 ($t$):154
$$b = (66 \times 14) \div 154$$
$14$ と $154$ に注目すると、$154 \div 14 = 11$ である。
$$b = 66 \div 11 = \mathbf{6}$$
答えの選択
- a = 80
- b = 6
解答群を見ると、この組み合わせは オ となる。
初学者へのアドバイス
科目Bのこのタイプ(表と連動する問題)を解くコツは2つである。
- 「行の和」「列の和」「全体の和」を先に余白に書く
プログラムを読み始める前に、表の端っこに合計値を書き込むだけで、その後の計算スピードが格段に上がる。 - 全部計算しようとしない
今回は、すべてのマスの理論度数を出す必要はない。問われている $a$ と $b$ に対応する行と列だけを見ればOKである。
ワンポイントメモ
ちなみに、この計算式は統計学の「独立性の検定」で使われる「期待度数」を求める式そのものである。しかし、その知識がなくても、「擬似言語を式に変換する力」があれば確実に得点できる。



コメント