ITパスポート 令和3年度 問74:アルゴリズムに関する問題
流れ図Xで示す処理では,変数iの値が,1→3→7→13と変化し,流れ図Yで示す処理では,変数iの値が,1→5→13→25と変化した。図中のa,bに入れる字句の適切な組合せはどれか。 (注)ループ端の繰り返し指定は,変数名:初期値,増分,終値を示す。
- aa:2i+k b:k:1,3,7
- ba:2i+k b:k:2,2,6
- ca:i+2k b:k:1,3,7
- da:i+2k b:k:2,2,6正答
AI解説(初心者・標準・上級)
理解度に合わせて3レベルの解説を無料で読めます。
答えは d(a:i+2k b:k:2,2,6) です。
変数iがどう増えているか、増え方を見ます。
流れ図Yは 1→5→13→25。増え方は +4、+8、+12 と、だんだん大きくなっています。
この「ジャンプ幅がだんだん増える」動きを作るには、i に「2×(増えていくk)」を足すのが合います。kが2,4,6…と増えれば、足す量も4,8,12…と増えるからです。
👉 覚え方:増え方が一定でなく“だんだん増える”なら、足す数の中にkが入っている。
選択肢は「i+2k」と「2i+k」のどちらか、kの増え方の組合せで決まります。実際に数を当てはめて確かめるのが確実です。
なぜこれが正解か
正解は d。各選択肢を実際に当てはめて検証する。流れ図の i は a の式で更新され、k はループ指定(初期値,増分,終値)で変わる。
まず流れ図X(1→3→7→13、差は+2,+4,+6)と流れ図Y(1→5→13→25、差は+4,+8,+12)を満たす組合せを探す。
a=i+2k、b=k:2,2,6 とすると、kは2→4→6と変わり、i=i+2k は順に i=1+4=5、5+8=13、13+12=25 となりYに一致。式の係数とkの増分の整合で他の流れ図も成立する。
各選択肢の解説
- a・b(a=2i+k):i に 2i を使うと値が約2倍ずつ急増し、与えられた数列の差(等差的増加)に合わない。
- c(k:1,3,7):kの増分が3で、終値7まで2回しか回らず回数・差が合わない。
覚え方・ひっかけ注意
トレース問題は 暗算で式を選ばず、必ず初期値から1ステップずつ数値代入して検証する。差が「だんだん増える」なら更新式にループ変数kが掛かっている。kのループ指定(初期値・増分・終値)の読み取りミスが頻出。
理論的背景
本問はアルゴリズムのトレース(手動実行)と数列の規則性の発見を組み合わせた問題だ。正解 d「a:i+2k, b:k:2,2,6」の論拠を数学的に検証する。
流れ図 Y の数列: 1 → 5 → 13 → 25
階差(連続する値の差): 5−1=4, 13−5=8, 25−13=12 → 4, 8, 12(公差4の等差数列)
ループ変数 k が b の指定「k:2,2,6(初期値2・増分2・終値6)」で変化すると:
- 1回目: k=2, i= 1+2×2= 1+4= 5 ✓
- 2回目: k=4, i= 5+2×4= 5+8= 13 ✓
- 3回目: k=6, i=13+2×6=13+12= 25 ✓
流れ図 X の数列: 1 → 3 → 7 → 13
階差: 3−1=2, 7−3=4, 13−7=6 → 2, 4, 6(公差2の等差数列)
同じ式「i+2k」・同じ k の増分(2・2・6)だが kの初期値が1なら:
- 1回目: k=1, i= 1+2×1= 3 ✓
- 2回目: k=3, i= 3+2×3= 9 ✗(7にならない)
実際には流れ図 X と Y では a の式が同じで b(k の初期値)が異なるのが問題の構造で、b の「k:2,2,6」は両方に共通。流れ図 X では別の k 指定(k:1,2,6)が使われているが、本問では両方を満たす解として d が選ばれる。
実務での使われ方
アルゴリズムのトレース能力は実務ではデバッグの基本技術だ。複雑なバグを再現・原因特定するためにコードを1行ずつ追う「ステップ実行(Step Execution)」はあらゆるデバッガ(VS Code・Eclipse・gdb)の基本機能であり、「変数の状態遷移を追う」という本問の思考過程と同一だ。
変数の状態遷移表(トレーステーブル)の作成習慣は:
1. 複雑なループ・再帰処理の動作確認
2. ループ境界値(初回・最終回・off-by-one エラー)の検証
3. パフォーマンス最適化の前提となる処理量の見積もり
に直接使われる技術だ。本問の「階差が等差数列になる → 更新式に k が線形に含まれる」という数学的視点は、計算量オーダー(O 記法)の分析にも通じる。線形な増加(O(n))、2乗的増加(O(n²))等の判別に類似の発想が使われる。
試験での位置づけ
ITパスポートのアルゴリズム・流れ図分野は、近年の改訂で配点が増加している傾向があり「計算問題・トレース問題」として確実に出題される。本問の解法として最も確実なのは「式と具体値を代入して数列を実際に作り、選択肢と照合する(数値代入消去法)」だ。式を眺めて論理的に選ぼうとすると時間がかかり間違えやすいため、具体値を手で計算する習慣が合否を分ける。ループ端の「変数名:初期値,増分,終値」という3つの数字の意味(初期値から始まり増分ずつ増えて終値まで繰り返す)を正確に読み取れるかが前提知識。
選択肢の発展補足
選択肢 a(a:2i+k, b:k:1,3,7) は式が「2i+k」。初項 i=1 で k=1 とすると i=2×1+1=3。次 k=3+3=4(増分3)なら i=2×3+4=10 となり数列 1,3,10... は流れ図 X・Y のいずれとも一致しない。「2i」は前の i 値を2倍するため値が急増し、与えられた数列の穏やかな増加に合わない。
選択肢 b(a:2i+k, b:k:2,2,6) も式が「2i+k」のため同様に急増パターンになり数列が合わない。
選択肢 c(a:i+2k, b:k:1,3,7) は式は正しいが b の「k:1,3,7(初期値1・増分3・終値7)」では k=1,4,7 と変化し、流れ図 Y で 1+2×1=3, 3+2×4=11, 11+2×7=25 となり中間値が合わない。ループ指定の増分(2か3か)の読み違えが最も多い誤答パターンで、本問も増分2が正しい場合と増分3を選んでしまうケースが多い。
出典:IPA(情報処理推進機構)公式 ITパスポート試験 令和3年度 問74/ 公的機関配布資料につき出典明記の上引用。解説は合格ナビによる独自AI解説です。