令和6年度 春期 午前 問5
アルゴリズム
流れ図に関する問題
正の整数 M に対して,次の二つの流れ図に示すアルゴリズムを実行したとき,結果 x の値が等しくなるようにしたい。a に入れる条件として,適切なものはどれか。
〔図〕左の流れ図:開始 → x ← 1 → ループ端「演算 n:M,−1,1」 → x ←(x × n)→ ループ端「演算」 → 終了。注記「ループ端の繰返し指定は,変数名:初期値,増分,終値を示す。」/右の流れ図:開始 → x ← 1 → n ← 1 →(ここへ戻る)→ x ←(x × n)→ n ←(n + 1)→ 判断「 a 」→ No ならループの先頭へ戻る,Yes なら終了。
- アn<M
- イn>M−1
- ウn>M
- エn>M+1
答えと解説を見る
✓ これが正解ウn>M
解説
掛けた後に増やすので n>M で抜けます。
設問は、左の流れ図と同じ結果を右の流れ図でも得るために、判断へ入れる条件を選ばせています。軸になるのは、右の流れ図が、掛け算を済ませてから変数を 1 増やし、その後で判断へ入るという順序になっている点です。左の流れ図は、ループ端の指定に従って変数が M から 1 ずつ減りながら 1 まで進み、その値を順に掛けていくので、結果は M までの整数をすべて掛け合わせた値になります。右で同じ値にするには、最後に掛ける数を M にしなければなりません。M を掛けた直後、変数は M に 1 を足した値へ増えているので、そこで終了と判断させたいことになります。つまり、M 以下の間は繰り返しを続け、M を超えたときだけ抜ける条件、すなわち n>M が当てはまります。M が 1 のときも 3 のときも、両方の流れ図で結果が一致します。
ほかの選択肢はなぜ違うのか
- アn<M:繰り返しを続けるか抜けるかの向きが反対になっています。M を 3 とすると、1 周目の判断で変数は 2 であり、そこで条件が満たされて終わるため、掛け算が 1 回で打ち切られます。
- イn>M−1:抜ける境目が 1 つ手前へずれた形です。変数が M に達した時点で終わってしまうので、最後に掛ける数が M より 1 小さい値になり、答えが 1 段小さくなります。
- エn>M+1:抜ける境目が 1 つ後ろへずれた形です。変数が M より 2 大きい値になるまで回り続けるため、余分に 1 回多く掛けてしまい、答えが 1 段大きくなります。
この問題の用語
- アルゴリズム問題を解くための、決まった手順や考え方そのものです。同じ問題でも手順によって、処理にかかる時間や必要な記憶量が変わります。
出典:令和6年度 春期 応用情報技術者試験 午前 問5
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)