ITパスポート試験 / 平成31年度 春期 ITパスポート試験 / 問71
certification-simodake-work

平成31年度 春期 ITパスポート試験 問71 解説 数値処理の計算

設問図

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

  1. ア 1 ✓ 正答
  2. イ 2
  3. ウ 4
  4. エ 5

解説

この問題は、入力値をルールに従って変換し、それを次の工程へ順番に渡す「トレース(追跡)」の作業を行うことで正解を導き出せます。

ルールを確認すると、あるボックスに A1A1A2A2 を入力したとき、出力は B1=A2B1 = A2、そして B2=A1B2 = A1A2A2 で割った余りとなります。

今回の構成では、左側のボックスから出力された B1B1B2B2 が、そのまま右側のボックスの A1A1A2A2 に入力されます。

  1. 左側のボックスに A1=49,A2=11A1 = 49, A2 = 11 を入力します。
    • B1B1A2A2 と同じなので B1=11B1 = 11 です。
    • B2B249÷1149 \div 11 の余りなので、49=11×4+549 = 11 \times 4 + 5 より、B2=5B2 = 5 です。
  2. 右側のボックスに A1=11,A2=5A1 = 11, A2 = 5 を入力します(左側の出力がそのまま入力されます)。
    • B1B1A2A2 と同じなので B1=5B1 = 5 です。
    • B2B211÷511 \div 5 の余りなので、11=5×2+111 = 5 \times 2 + 1 より、B2=1B2 = 1 です。

したがって、右側のボックスから出力される B2B211 となります。

この問題の背景にあるのは、ユークリッドの互除法という数学的なアルゴリズムです。ユークリッドの互除法は、二つの自然数の最大公約数を効率的に求める手法であり、今回のボックスの処理のように「割った余りを次の入力として繰り返す」という手順を最大公約数が求まるまで行います。

ITの現場では、このような処理の繰り返しを「アルゴリズム」や「処理フロー」として整理することが多々あります。プログラムを作成する際、複雑な数式をそのまま計算するのではなく、今回のように小さな処理(関数やモジュール)を組み合わせて目的の結果を出す設計が基本となります。特にプログラミングの基礎問題として、ループ処理や変数の値の更新を確認する出題形式はよく見られます。もし試験本番で同様の問題が出た場合は、焦らずに一つずつ値を代入して、図やメモ書きを残しながら進めるのが最も確実です。

  • ITパスポート アルゴリズムとは(ITパスポート試験ドットコム)

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

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