本文へスキップ

FUNDAMENTAL INFORMATION TECHNOLOGY ENGINEER

基本情報技術者の問題解説

プログラムの基本要素 難しい fe_b_v89_alg_blank_023

問題

配列 a={1,4,2,5,3} に対して、次の手続 pairHard(a) を実行したときの戻り値はどれか。

○整数型: pairHard(整数型の配列: a)
  整数型: i, j, s ← 0
  for (i を 1 から aの要素数 - 1 まで 1ずつ増やす)
    for (j を i + 1 から aの要素数 まで 1ずつ増やす)
      if ((a[i] + a[j]) mod 2 = 0)
        s ← s + (j - i)
      elseif (a[i] < a[j])
        s ← s + 1
      endif
    endfor
  endfor
  return s
  1. 11
  2. 13
  3. 14
  4. 16
出典:オリジナル問題|参考範囲:試験要綱Ver.5.5 / FEシラバスVer.9.2 科目B範囲

正解と解説

正解:14

正解:14

全ての i<j の組を調べる。和が偶数なら j-i を加え、和が奇数でも a[i]<a[j] なら1を加える。例えば i=1 では (1,2),(1,3) で各1、(1,4) で3、(1,5) で4を加えて合計9。残りの組も加えると最終的に14になる。

13は (3,5) の奇数かつ増加の1点を落とした場合、16は偶数組を単に2点ずつ数えた場合に出やすい。11は条件に合わない組を早く除外しすぎている。 途中のsを行ごとに分けて書くと、どの組で加点したかを確認しやすい。特に(2,5)のようにどちらの条件にも当てはまらない組は、sを増やさないまま次へ進む。

二重ループは、外側iごとに内側jを全て見る。分岐が2段階あるときは、最初のifに入った組はelseifを評価しない点に注意する。

この問題について

出典:オリジナル問題|参考範囲:試験要綱Ver.5.5 / FEシラバスVer.9.2 科目B範囲

公開問題・サンプル問題の形式、擬似言語記法、アルゴリズム読解・トレース・空欄補充・セキュリティ事例判断の傾向を参考にした独自問題です。本文・数値・選択肢は新規作成しています。

公式試験問題、公開問題、市販教材、外部問題サイトの問題文を転載・改題したものではありません。

参考範囲: 2026年度現行科目B・シラバスVer.9.x参考

RELATED

関連問題