問 題
図は、100 未満の互いに異なる 20 個の正の整数 a1, a2, …, a20 のうちから 2 番目に小さい数を出力するフローチャートである。図の ㋐ ~ ㋓ に当てはまるものの組合せとして最も妥当なのはどれか。
㋐ ㋑ ㋒ ㋓
1. x ← y y ← ai x ← ai x
2. x ← y y ← ai x ← ai y
3. x ← y y ← ai y ← ai y
4. y ← x x ← ai x ← ai x
5. y ← x x ← ai y ← ai y
解 説
具体的に考えます。
a1 = 1、a2 = 2,,,a20 = 20 という 20 個の整数を考えます。2 番目に小さい数が出力されるフローチャートなので、この 20 個の時に 2 が出力されるように、図をうめていきます。
上からチャートを読んでいくと
(x,y,i) = (100,100,1)nnn で、㋐、㋑ と続きます。ここで、正解が 1 ~ 3 、つまり x ← y, y ← ai とすると、y に a1 、つまり y に 1 が入ります。
この仮定の下でチャートを読み進めると
(x,y,i) = (100,1,2)ny で、㋒ と続きます。x ← ai とすると、x に a2 、つまり x に 2 が入ります。そしてチャートを読んでいくと、a3 以降すべて yes となり、x を出力すれば OK です。
ところで
㋒ のところで y ← ai とすると、y に a2 、つまり y に 2 が入ります。x = 100 のままなので、以降ずっと ㋒ にチャートが分岐することになり、どんどん y が増えていきます。これでは 2 を出力することができません。
一応確認のため、正解が 4,5 であったと仮定します。すると (x,y,i) = (100,100,1)nnn の次に x に a1 、つまり x に 1 が入ります。 すると後はずっと ai > x になり、2 を出力することができません。4,5 は誤りとわかります。
以上より、正解は 1 です。
コメント