平成25年度 春期 午前 問8
アルゴリズム
流れ図に関する問題
x と y を自然数とするとき,流れ図で表される手続を実行した結果として,適切なものはどれか。
〔流れ図〕字で書き起こしたもの
開始 ↓ q ← 0 r ← x ↓ 〈判断〉 r < y ? ──Yes──→ 終了 │No ↓ r ← r − y q ← q + 1 ↓ (判断の手前へ戻る)
| q の値 | r の値 | |
|---|---|---|
| ア | x ÷ y の余り | x ÷ y の商 |
| イ | x ÷ y の商 | x ÷ y の余り |
| ウ | y ÷ x の余り | y ÷ x の商 |
| エ | y ÷ x の商 | y ÷ x の余り |
- アx ÷ y の余り x ÷ y の商
- イx ÷ y の商 x ÷ y の余り
- ウy ÷ x の余り y ÷ x の商
- エy ÷ x の商 y ÷ x の余り
答えと解説を見る
✓ これが正解イx ÷ y の商 x ÷ y の余り
解説
qはxをyで割った商、rはその余りになります。
この流れ図がしているのは、引けるだけ引いて、引いた回数を数える手続です。始めにqを0にし、rにxを入れます。そのあとは、rがyより小さくなるまで、rからyを引きながらqを1ずつ増やしていきます。これは割り算を引き算の繰返しで表したものです。繰返しが終わったときにrに残っているのは、もうyを引けないところまで減らした残りですから、余りに当たります。qは引いた回数を数えていたので、商に当たります。判定の軸は二つで、割られる数がどちらの変数から始まっているかと、回数を持つ変数と残りを持つ変数のどちらを商とみているかを見ます。xが17でyが5なら3回引けてrは2になり、17を5で割った商と余りに一致します。
ほかの選択肢はなぜ違うのか
- アx ÷ y の余り x ÷ y の商:割る向きは合っていますが、商と余りの受け持ちが入れ替わっています。回数を数えていた変数のほうが商であり、引き算のあとに残っている値が余りです。
- ウy ÷ x の余り y ÷ x の商:割られる数と割る数が逆になっており、さらに商と余りの受け持ちも入れ替わっています。手続の最初に代入されている側が、割られる数に当たります。
- エy ÷ x の商 y ÷ x の余り:商と余りの対応は合っていますが、割る向きが逆になっています。引かれ続けるのはxから始まった変数なので、xをyで割る計算になります。
出典:平成25年度 春期 基本情報技術者試験 午前 問8(改変:原典の図表をテキストに書き起こした)
この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)