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

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

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

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

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

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

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

順を追った処理の考え方

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

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

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

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

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

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

参考リンク

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

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