ITパスポート試験 / 平成21年度 春期 ITパスポート試験 / 各問題解説 / 問72
certification-simodake-work

平成21年度 春期 ITパスポート試験 問72 解説 処理ボックスの計算

設問図

問72 図1のように二つの正の数値A1, A2を読み取り, 二つの数値B1, B2を出力する ボックスがある。B1にはA2と同じ数値を出力し, B2にはA1をA2で割った余りを 出力する。図2のようにこのボックスを2個つないだ場合, A1=15, A2=6のとき後 方のボックスのB1に出力される数値は幾らか。

  1. ア 0
  2. イ 3 ✓ 正答
  3. ウ 6
  4. エ 15

解説

この問題は、入力値がボックスを通るたびにルールに従って変換されるという一連の流れを、順を追って計算することで解くことができます。

1つ目のボックス:A1=15,A2=6A1=15, A2=6 を入力します。 B1=A2=6B1 = A2 = 6 B2=15(mod6)=3B2 = 15 \pmod 6 = 3

2つ目のボックス:1つ目の出力 B1,B2B1, B2 がそのまま入力されます。つまり、A1=6,A2=3A1=6, A2=3 を入力します。 B1=A2=3B1 = A2 = 3 B2=6(mod3)=0B2 = 6 \pmod 3 = 0

したがって、後方のボックスの B1B1 は 33 となります。

ボックスが示すアルゴリズムの正体

この問題のボックスは、実は数学で習う「ユークリッドの互除法」の1ステップを表現しています。ユークリッドの互除法とは、2つの整数の最大公約数を求めるための効率的な手法です。

問題のルールを整理するとこうなります。

  • B1B1 には入力された2番目の値(A2A2)をそのまま渡す
  • B2B2 には A1A1 を A2A2 で割った余りを渡す

この操作を繰り返すと、最後には余りが 00 になります。余りが 00 になったときの B1B1 の値が、元の2つの数値(この場合は15と6)の最大公約数となります。今回のケースでは、2つ目のボックスで B2B2(余り)が 00 になったため、その時の B1B1 である 33 が最大公約数であることがわかります。

順を追った処理の考え方

試験会場では、図に直接数値を書き込みながら進めるのが最も確実です。

  1. 最初のボックスの左端に 1515 と 66 を書く。
  2. ボックス内の指示通りに計算する。B1B1 はそのまま 66 を右へ、下側の出口 B2B2 には 1515 を 66 で割った余りである 33 を出す。
  3. 2つ目のボックスの左端に、前のボックスから受け取った 66 と 33 を書き込む。
  4. 再び同様の計算を行う。B1B1 は 33 となり、下の B2B2 は 00 となる。
  5. 問題が求めているのは「後方のボックスの B1B1」なので、その値である 33 を選択肢から選ぶ。

このように、複雑そうな仕組みであっても、1つずつ「入力」と「出力」の関係を丁寧にトレース(追跡)していくのが、アルゴリズム関連の問題を解くコツです。

なぜこの知識が重要なのか

コンピュータプログラムにおいて、複雑な処理は小さな処理の組み合わせでできています。この問題のように、ある処理の結果が次の処理への入力となる「パイプライン」的な考え方は、データ処理や自動化の基本です。

また、ユークリッドの互除法のようなアルゴリズムは、単なる数学の知識ではなく、コンピュータが非常に少ない手順で答えを導き出すための「効率的な設計」の例です。ITパスポートでは、直接プログラミングをすることはありませんが、こうした「手順を組み立てて答えを出す」という論理的思考は、システム設計や業務フローを理解する上で非常に重要な基礎能力となります。

参考リンク

学習の記録にははてなブックマーク!

気づいたこと・覚えたことをコメントにメモしよう