ITパスポート 2019年 春期 問71
問題文
図1のように二つの正の整数A1、A2を入力すると、二つの数値B1、B2を出力するボックスがある。B1はA2と同じ値であり、B2はA1をA2で割った余りである。図2のように、このボックスを2個つないだ構成において、左側のボックスのA1として49、A2として11を入力したとき、右側のボックスから出力されるB2の値は幾らか。

選択肢
ア:1(正解)
イ:2
ウ:4
エ:5
🔒 解説は解答すると表示されます
図の演算ブロックの動作と二段接続【ITパスポート 解説】
正解の理由
図1のブロックは次の動作をします。上の出力B1は入力A2をそのまま出力します(コピー)。下の出力B2は「A1をA2で割った余り」を出力します。つまり、ブロックは
- B1 = A2
- B2 = A1 を A2 で割った余り(剰余、remainder)
図2では左のブロックに A1=49、A2=11 を入れます。左ブロックの出力は
- 上(B1) = 11
- 下(B2) = 49 ÷ 11 の余り = 5(49 = 11×4 + 5)
これが右ブロックの入力としてそのまま渡されます(上出力→上入力、下出力→下入力)。したがって右ブロックの A1=11、A2=5 になり、右ブロックの下出力B2は 11 を 5 で割った余り、つまり 1 になります。よって、最終的に右側から出るB2の値は 1 で、選択肢では ア(1)が正しいです。
解法ステップ
- ブロックの動作を確認:B1 = A2、B2 = A1 mod A2(剰余)。
- 左ブロックに A1=49、A2=11 を代入して出力を求める。
- B1(left) = 11
- B2(left) = 49 mod 11 = 5(なぜなら 49 = 11×4 + 5)
- 左ブロックの出力を右ブロックの入力に接続(上→上、下→下)。
- 右ブロックの A1 = 11、A2 = 5
- 右ブロックの下出力を求める(これが問題の求める値)。
- B2(right) = 11 mod 5 = 1(11 = 5×2 + 1)
- 結果:B2(right) = 1 → 選択肢は ア(1)
選択肢別の誤答解説
-
ア(1)
上の理由どおり正しい結果です。 -
イ(2)
もし間違って 49 mod 11 = 2 と計算してしまうとこの選択に至りますが、49 を 11 で割ると 11×4 = 44 で余りは 5 です。したがって 2 は誤りです。 -
ウ(4)
4 は「11 を 5 で割った商(=2)の値」など、剰余ではなく商を取り違えたときに出やすい誤答です。本問は余り(剰余)を扱います。 -
エ(5)
5 は左ブロックの下出力(左側の B2)の値そのものです。これを右側の最終出力と誤認するとこの答えになりますが、右ブロックでさらに余りの計算が行われる点を忘れないでください。
よくある誤解
-
出力の順序を入れ替える(上出力と下出力を逆に接続する)
- 図は上下二本の線で接続されています。上出力が上入力へ、下出力が下入力へ流れると理解してください。入れ替えると別の値になります。
-
「余り」と「商」を混同する
- 「商」は割り算で何回割れるかの整数部分(例:49 ÷ 11 の商は 4)、「余り(剰余)」は引き算で残る値(例:5)です。本問は余りを取る問題です。
-
この接続が常に最大公約数(gcd)を返すと誤解する
- 2つのブロックの接続はユークリッドの互除法(gcd を求める手順に似ている)に関係しますが、二段だけでは常に gcd になるわけではありません。今回の例では結果が gcd(49,11)=1 と一致しましたが、それは偶然や手順によります。
補足コラム
この図の操作は「剰余(余り)」の連続操作で、ユークリッドの互除法(ユークリッドの互除法:ある2つの整数の最大公約数を求める方法)と似ています。互除法では「大きい数を小さい数で割り、余りを取る」を繰り返して最終的に余りが 0 になったときの直前の余りが最大公約数になります。ここではブロックを2つつないでいるだけなので、互除法の途中の一段分を進めた形と考えると理解しやすいです。
また注意点として、もしある段で余りが 0 になると次の段の A2 が 0 になり「0 で割る」ことになってしまいます。数学的に 0 で割る操作は定義されないため、実務や設計ではその場合を特別扱い(処理を止める、別の値を代入するなど)します。
FAQ
Q. 出力の上下は必ず対応しているのですか?
A. はい。図の接続は上出力→上入力、下出力→下入力の対応です。同じ上下の線でつながっています。
A. はい。図の接続は上出力→上入力、下出力→下入力の対応です。同じ上下の線でつながっています。
Q. 余りが 0 になったらどうなるのですか?
A. もし余りが 0 だと、次のブロックの A2 が 0 になります。A2 が 0 のとき A1 を A2 で割る(A1 mod A2)は定義されないため、実際の設計ではその場合の処理ルール(停止、別値代入など)を決めます。問題文では入力は正の整数とあるため、通常はそのようなケースを避けるか別扱いします。
A. もし余りが 0 だと、次のブロックの A2 が 0 になります。A2 が 0 のとき A1 を A2 で割る(A1 mod A2)は定義されないため、実際の設計ではその場合の処理ルール(停止、別値代入など)を決めます。問題文では入力は正の整数とあるため、通常はそのようなケースを避けるか別扱いします。
Q. この問題は暗記が必要ですか?
A. 暗記よりも「ブロックの動作(B1 は A2 のコピー、B2 は A1 の A2 による余り)」を理解することが重要です。それを図に当てはめて順に計算すれば解けます。
A. 暗記よりも「ブロックの動作(B1 は A2 のコピー、B2 は A1 の A2 による余り)」を理解することが重要です。それを図に当てはめて順に計算すれば解けます。
関連キーワード: 余り、剰余、割り算、ユークリッドの互除法、演算ブロック、入出力、剰余演算、整数演算

\ せっかくなら /
ITパスポートを
クイズ形式で学習しませんか?
クイズ画面へ遷移する→
すぐに利用可能!

