アルゴリズムとプログラミング

基本情報技術者試験配列/ループ」の問題

アルゴリズムとプログラミングアルゴリズムとプログラミング計算問題難易度:normal
次の擬似言語で表される手続 sumOdd を、引数として要素数 5 の整数型の配列 {12, 125, 1008, 231, 14} を与えて実行したとき、戻り値として返される値はどれか。配列の添字は 1 から始まる。
○整数型: sumOdd(整数型の配列: arr)
  整数型: total ← 0
  整数型: i
  for (i を 1 から arrの要素数 まで 1 ずつ増やす)
    if (arr[i] mod 2 が 1 と等しい)
      total ← total + arr[i]
    endif
  endfor
  return total
356
1034
26
1390
正解
356

arr の各要素について arr[i] mod 2 が 1(奇数)のものだけを total に加える。奇数は 125 と 231 のみであり、total = 125 + 231 = 356 となるため アが正しい。

?選択肢ごとの解説

ア ○arr の各要素について arr[i] mod 2 が 1(奇数)のものだけを total に加える。奇数は 125 と 231 のみであり、total = 125 + 231 = 356 となるため アが正しい。
イ ×偶数要素 12, 1008, 14 を合計した 1034 であり、条件 mod 2 = 1 を mod 2 = 0 と取り違えた誤りである。
ウ ×両端の小さな偶数 12 と 14 だけを足した 26 であり、加算対象を偶数かつ小さい値に限定した誤りである。
エ ×全要素の総和 12+125+1008+231+14=1390 であり、奇数判定の if を一切適用していない誤りである。

くわしく

mod 演算による偶奇判定は頻出パターンである。条件が 1 と等しいか 0 と等しいかでまったく逆の集合を選ぶことになるため、条件式の右辺を必ず確認する必要がある。

本番での押さえどころ

試験のコツ

mod の条件は『余りが何のとき』を声に出して確認し、対象要素を丸で囲んでから合計するとよい。

覚え方

『mod 2 が 1 → 奇数』とペアで暗記する。1 は奇数の代表値と覚える。

よくある誤り

mod 2 = 1 を「偶数」と誤読して偶数和 1034 を選ぶミスが最も多い。

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

この問題を、AIの8-ways解説つきで。

基本情報技術者試験の演習を、一問ごとに「なぜ」まで。まずは無料で。

無料ではじめる →

ukamiru 過去問 · 基本情報技術者試験 · fe-b-algo-0001

【基本情報技術者試験】配列/ループの問題 — 解答・解説|ukamiru 過去問