応用情報技術者 2020年 秋期 午前2 問47
問題文
次の流れ図において、
① → ② → ③ → ⑤ → ② → ③ → ④ → ② → ⑥
の順に実行させるために、①においてmとnに与えるべき初期値aとbの関係はどれか。ここで、a,bはともに正の整数とする。

選択肢
ア:a = 2b
イ:2a = b
ウ:2a = 3b
エ:3a = 2b(正解)
🔒 解説は解答すると表示されます
逐次減算の遷移【午前2解説】
正解の理由
フローチャートは「大きい方から小さい方を引く」操作を繰り返し、等しくなった時点で終了します。設問で要求される実行順(①→②→③→⑤→②→③→④→②→⑥)を満たすためには、初期値 a,b が次の関係を満たす必要があります。選択肢の中では エ の がその条件に対応します。以下で、各分岐での m,n の具体的な変化と不等式の追跡を順に示して、なぜ が必要かを明確にします。
解法ステップ
初期状態(①)
- m = a, n = b (a,b は正の整数)
-
最初の判断(②)で右へ進み③に入るには m ≠ n かつ m < n が必要
- よって条件1: (かつ 、しかし正整数なので で十分)
-
③で m < n の場合(右へ)⑤を実行:n ← n − m
- ⑤の後の値を記すと、m = a, n = b − a(ここを n1 と置く)
- 以降の判断で再び③に入るためには、②で m ≠ n1 が必要(つまり )
-
次に③で下へ(④)に入るには m > n1 が必要
- よって条件2: (すなわち )
-
④を実行すると m ← m − n1
- ④の後の値は m = a − (b − a) = (これを m1 とする)、n は n1 =
-
最後に②で等号の下辺(下へ)に行って⑥へ至るには m1 = n1 が必要
- よって条件3:
-
条件3を整理すると
まとめ(整合性確認)
- を満たすとき、a,b は正整数なので存在するパラメータ表示 ()が得られます。
- この一般形は条件1()、条件2()および各中間値が正であることを自動的に満たします。したがって、実行順を満たす初期関係は (選択肢 エ)です。
(検算の具体例)
- 最小の で を取ると、 ① m=2,n=3 → ②: 2<3 → ③: < → ⑤: n=1 → ②: 2≠1, 2>1 → ③: > → ④: m=1 → ②: 1=1 → ⑥(終了)。順序が一致します。
選択肢別の誤答解説
-
ア:
これだと となり、最初の比較で m>n(④へ)になってしまい、所望の右側ルート(⑤を先に実行する)に入らないため不適。 -
イ: (すなわち )
これは初期で (良い)が、⑤を実行すると となり、次の②で既に m=n になってしまうため(すぐに⑥へ)、要求されるループ(③→⑤→…→④)を経ない。 -
ウ: (すなわち )
これだと になり、最初の比較が下辺(④)へ進むため、最初に③→⑤の経路をとらない。したがって順序が合致しない。 -
エ:
上記の解法ステップで示した通り、各比較の不等号の向きと変数更新が矛盾なくつながり、求める実行順を満たす。
よくある誤解
- 初期の比較で「等しくない=右へ進む」が要件なだけだと誤解して、どちらの不等号(<か>)になるかを追わない。実行順を得るには不等式の向き(<か>か)まで確定する必要があります。
- 変数更新を忘れる/取り違える(例えば⑤で m を変えると誤認する)。⑤は n を更新し、④は m を更新します。どちらが変わるかを正確に追うことが重要です。
- 整数性や正の条件を確認しない。導出された関係が整数解を持つか(例: は )を確認しないと、実際の初期値候補が存在するか不明瞭になります。
補足コラム
このフローチャートは「引き算バージョンのユークリッドの互除法(減算法)」に相当します。繰り返し「大きい方から小さい方を引く」操作を行い、値が一致したら終了するアルゴリズムです。設問は「特定の比較・更新の順序」を要求しているため、単に最終的な最大公約数ではなく、中間での不等式の符号変化と差の追跡が鍵になります。導出された一般解 ()はこの順序を保証する最小単位(公約数をくくった形)です。
FAQ
Q. a,b はどのような値の組が解になるか?
A. 任意の正整数 に対して が解になります。最小例は 。
A. 任意の正整数 に対して が解になります。最小例は 。
Q. 等号に達する前に別の等号(例:②で早期に等しくなる)になってしまうことは?
A. それを避けるために中間不等式( と )を満たす必要があり、 はこれらを満たす最小の比率条件です。
A. それを避けるために中間不等式( と )を満たす必要があり、 はこれらを満たす最小の比率条件です。
Q. 同様の方法で別の実行順を設計できるか?
A. 可能です。各分岐での不等号の向きを設定し、対応する連立不等式と差分更新を追えば、初期比率の条件を同じ手順で導けます。
A. 可能です。各分岐での不等号の向きを設定し、対応する連立不等式と差分更新を追えば、初期比率の条件を同じ手順で導けます。
関連キーワード: ユークリッド互除法、逐次減算、フローチャート、変数更新、不等式追跡

\ せっかくなら /
応用情報技術者を
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

