過去問解きまくり研究所 ホーム

平成28年度 秋期 午前 問7

アルゴリズム

関数に関する問題

整数 x,y(x > y ≧ 0)に対して,次のように定義された関数 F(x, y) がある。F(231, 15) の値は幾らか。ここで,x mod y は x を y で割った余りである。

関数の定義(原典は場合分けの数式):

F(x, y) = x                (y=0 のとき)
          F(y, x mod y)    (y>0 のとき)
答えと解説を見る

✓ これが正解イ3

解説

余りを取り続けると3が残ります。最大公約数です。

定義をそのまま当てていきます。2番目の引数が0でないあいだは、1番目に2番目の値を、2番目に割った余りを置いて自分自身を呼び直します。2番目が0になったところで、そのときの1番目の値が答えになります。231を15で割ると余りが6なので、次は15と6の組です。15を6で割ると余りが3なので、次は6と3の組になります。6を3で割ると余りが0なので、次は3と0の組で、ここで2番目が0ですから1番目の3が値でした。この関数は、二つの整数の最大公約数を求めるやり方として知られています。実際、231は3と7と11を掛けた数、15は3と5を掛けた数なので、両方を割り切る数のうち最大のものは3であり、たどり着いた値と一致します。

ほかの選択肢はなぜ違うのか

出典:平成28年度 秋期 基本情報技術者試験 午前 問7

この解説に誤りを見つけたら教えてください。直して、直した記録を残します。誤りを報告する(メールが開きます)