メインコンテンツへスキップ
基本情報技術者令和7年度 CBT科目B問 5計算

令和7年度 CBT 基本情報技術者 科目B 問5

難度標準

次の記述中のaとbに入れる正しい答えの組合せを、解答群の中から選べ。ここで、配列の要素番号は1から始まる。

予防接種の病気Xに対する予防効果を調査するために集めたデータの集計結果を基に、病気Xにかかるかどうかが、予防接種の有無に影響されないと仮定した場合の人数を計算する。この人数を理論度数という。表1に集計結果の例を示し、表2に表1を基に計算した理論度数を示す。

関数fは、引数dataで受け取った集計結果を基に計算した理論度数を返す。引数と戻り値は二次元配列で、その行が表の行、その列が表の列に対応する。

表1 集計結果の例(単位:人)

病気Xにかからなかった病気Xにかかった
予防接種を受けた826
予防接種を受けていない588

表2 表1を基に計算した理論度数(単位:人)

病気Xにかからなかった病気Xにかかった
予防接種を受けたa(非表示)
予防接種を受けていない(非表示)b

注記:原典で網掛けの部分は表示していない。

〔プログラム〕

○実数型の二次元配列: f(実数型の二次元配列: data)
  実数型: t ← dataの要素の和
  整数型: row ← dataの行数
  整数型: col ← dataの列数
  実数型の二次元配列: result ← {row行col列の未定義の値}
  整数型: r, c
  for (rを1からrowまで1ずつ増やす)
    for (cを1からcolまで1ずつ増やす)
      result[r, c] ← (dataの行番号rの要素の和) ×
                      (dataの列番号cの要素の和) ÷ t
    endfor
  endfor
  return result

選択肢

解説

結論 → 詳細 → 補足 の 3 層構成

展開
結論Layer 1

プログラムは各セルについて、行の合計×列の合計÷全体の合計を計算します。全体の合計は82+6+58+8=154人です。

詳細Layer 2
展開

aは「接種を受けた」行と「病気にかからなかった」列の交点なので、(82+6)×(82+58)÷154=88×140÷154=80人です。

補足Layer 3
展開

bは「接種を受けていない」行と「病気にかかった」列の交点なので、(58+8)×(6+8)÷154=66×14÷154=6人です。したがってa=80、b=6のオです。観測された人数をそのまま転記せず、設問で仮定した独立性に基づく人数を計算します。

この解説は?
AI生成

解説は公式の問題文・公式解答を基に作成しています。 事実誤認・選択肢の取り違え・最新法令の反映漏れ等を含む可能性があるため、 重要な判断は必ずリンク先の公式資料でご確認ください。

最終更新:

検証プロセス・誤り報告フローは 運営透明性レポートで公開しています。

分野「アルゴリズムとプログラミング」の学習ポイント

この問題の理解を「分野全体の力」に広げるための足がかり

何が問われるか
計算量(O 記法)・基本データ構造・典型アルゴリズム(探索・整列)・再帰の挙動を読む力。
学習の進め方
擬似コードを実際にトレースして変数の遷移を表に書き出す習慣を付ける。スタック/キュー/木の図示が定着の鍵。
関連キーワード
計算量二分探索クイックソート再帰スタックキュー木構造
この分野の問題をもっと解く
AI コパイロット

この問題を AI と深掘りする

用語解説・選択肢分析・類題生成をその場で対話。クイズモードでは解答→解説がゼロ遷移。

クイズモードで開く

関連する問題

アルゴリズムとプログラミング の他の問題

他年度の「アルゴリズムとプログラミング」問題

基本情報技術者 の同じ分野を年度をまたいで演習する

基本情報技術者 の学習ガイド