本文へ移動
✓ 合格ドリル基礎から練習

基本情報技術者 / 条件・事例の練習

基本情報技術者試験基礎・応用

条件を読む・根拠を説明する

同じ値の出現数を二つの境界で求める

条件を整理し、答えを選んでから解き方を確認しましょう。

昇順A=[1,2,2,2,5,7]、添字0〜5。境界関数B(t)はt以上が初めて現れる位置(なければ6)を返す。整数値2の個数を求める。 B(t): lo ← 0 hi ← 6 while lo < hi m ← floor((lo+hi)/2) if A[m] < t lo ← m + 1 else hi ← m endif endwhile return lo 件数を求める式と値はどれか。

答え・解き方を読む

B(3)−B(2)=3

図で見る
同じ値の並びを二つの境界ではさむ
2以上と3以上の最初の位置
2以上が最初に現れる添字は1、3以上は添字4の値5。半開区間[1,4)に値2が3個あるのでB(3)−B(2)=3。図を拡大して見る ↗

2以上が最初に現れる添字は1、3以上は添字4の値5。半開区間[1,4)に値2が3個あるのでB(3)−B(2)=3。

添字は0始まりです。B(3)は値3の位置を探すのではなく、3以上が初めて現れる位置を返します。

考える順序

  1. 1B(2)=1で2の区間が始まる
  2. 2整数なのでB(3)=4が2の区間の直後
  3. 3半開区間[1,4)の長さは4−1=3

選択肢ごとの理由

  • 比較 · B(3)−B(2)+1=4

    終端は区間に含まれないため1を加えません。

  • 比較 · B(2)+B(3)=5

    位置の合計では区間長を得られません。

  • 正解 · B(3)−B(2)=3

    B(2)=1で2の区間が始まる。整数なのでB(3)=4が2の区間の直後。半開区間[1,4)の長さは4−1=3。

  • 比較 · B(2)−B(1)=1

    それは1の区間の長さを求めています。

学習アプリで条件・事例を5問 →

学習の参考資料

用語・仕組みを学ぶための参考資料です。設問の条件と、このページの解き方を併せて確認してください。

教材の作成・確認方法

関連する要点をまとめて読む

技術の入口の要点と練習一覧 →