一種種午前 平成9年
問01〜問10 問題と解説

末広ページへ このコーナーの目次へ

 ここの内容に関しての質問を歓迎します。斎藤末広まで。当ページの内容をご利用した方は,末広ページご利用の案内を参照して下さい。

 


問01

 

解説

 割った余り(剰余、mod)はよく出題される問題である。しかし、このようにマイナスを含んだ剰余の問題は珍しい。次からはまずマイナスを含んだ問題はでないであろう。modの問題は次からもでる。

 この手の問題は、たいてい ウ が正解の割合が高い。ウ、イ、ア、エの順でチェックしていくといい。

 A = B * N + mod(A,B) ただし、Bとmod(A,B)は同符号、A,B,Nは整数

 ア A=11, B=5  よって、11 = 5 * N + 2 となる適当な整数Nはない
 イ A=11, B=-5  よって、11 = -5 * N - 1 となる適当な整数Nはない
  A=12, B=-5  よって、12 = -5 * N - 3 となる適当な整数Nは、- 3
 エ A=-12, B=5  よって、-12 = 5 * N + 2 となる適当な整数Nはない

解答 ウ

 


問02

 

解説

2種平成9年度春午前問4と問題の内容は同じである。問題の説明の仕方、解答群が違う。1種の方が例の出し方、表現の仕方が難しくなっている。1種・2種のどちらかの問題が不良が発生して急遽間に合わせたか、同じ人が作成して両方に提出したか、実験的に同じ内容の問題で出題の仕方で正答率がどうなるか実験しているか、どうしてでしょうか? 高度技術者試験では、同じ問題の使い回しはあったが、1種・2種で同じ問題が使われたのは初めてである。

 この手の問題は、数字を代入して間違いを解答群からはずしていき、正しい答えを出すのが、早い。びびらずに問題がとけるかが、課題である。等比数列の和の公式を覚えている人は、ほとんどいないと思われる。それを知っていないととけない問題は出題されないだろう。この手の問題の解答はウが多い。まず、それから試すのがいいであろう。

解き方1

 n = 1 のとき 総和は2つ
 n = 2 のとき 記号列は、4つで、総数は 2 + 4 = 6
 n = 3 のとき 記号列は、8つで、総数は 6 + 8 = 14

よって、n = 1をそれぞれに代入すると 2になるはずである。

ア 2^(n-1) + 1 = 2
イ 2^n = 2
ウ 2 * (2^n - 1) = 2
エ 2^(n+1) - 1 = 3 で間違い

 ここで、さらに、n = 2をア、イ、ウに代入すると 6となるはずである。

ア 2^(n-1) + 1 = 3 で間違い
イ 2^n = 4 で間違い
ウ 2 * (2^n - 1) = 6 で正解

よって、解答はウとなる。

解き方2
 数学的に解く。本番ではお勧めしない。しかし、せっかく出題されたのであるから、等比数列の和の基本的な解き方を確認して意味で、勉強して置こう。

記号列の数は、長さをnとすると、 2^n となる。よって、長さが1からnまでの記号列の総数をSnとすると

 Sn = 2^1 + 2^2 + 2^3 + 2^4 + … + 2^n ----- *1

 ここで、2を両辺にかけて

2Sn = 2^2 + 2^3 + 2^4 + … + 2^n + 2^(n+1) ----- *2

*1 - *2 より

  Sn - 2Sn = 2^1 - 2^(n+1)

  (1-2)Sn = 2(1-2^n)

  Sn = 2(2^n - 1)

よって、解答はウとなる。

解答 ウ

 


問03

解説

解き方1

2進数と10進数の桁問題である。頻出問題である。

 整数をビットで表現するテクニックに2の補数表現がある。-1をすべて1とする約束である。

2の補数表現とは、3ビットの場合を例とすると、

         3 は、011
         2 は、010
         1 は、001
         0 は、000
        -1 は、111
        -2 は、110
        -3 は、101
        -4 は、100

                    と表すやり方である。

 よって、64ビットの場合は、-2^63 から 2^63 - 1が表現できる。
 ここで、2^10 = 1024を使用すると
 2^63 は、だいたい、2^63 = 2^10 * 2^10 * 2^10 * 2^10 * 2^10 * 2^10 * 2^3 で、8,000,000,000,000,000,000
よって、19桁が解答である。

解き方2

 問題にわざわざ、log102_= 0.301を使ってもよいとある、せっかくであるので、logを使用して解いてみよう。

2^63 - 1が最大値であることは、解き方1と同じ。

ここで、10 < 99 < 100であるので、log1010 < log1099 < log10100である。
よって、1<log1099<2である。よって、log10XXの値を、小数点を切り上げすると10進数の桁数となる。

これを利用して、
log10(2^63)
= 63 log102
= 63 * 0.301
= 18.963

よって、2^63-1は、19桁となる。

解答 イ

 


問04

解説

 無理数、有理数、循環小数、無限小数の基礎的な理解がないと難しい問題である。数学的な基礎力を問う問題である。

 一般的な数字でみると分かりにくいので、次の例で考える。

10進数0.1は、2進数では循環小数(0.000110011001…)、2進数の有限小数は、かならず10進数でも有限小数になる。これは、基数変換の方法から理解できる。

 ア 正しい
 イ 10進数で表現すると0.1、2進数では循環小数(無限小数)になる。
 ウ 有理数か否かは、それが分数で表現できるか否かということである。よって、基数の表現には関係がない。分数の分母、分子は整数でありそれの基数表現のことになるからである。

 エ 有理数のうち、1/3は、無限小数の0.33333…である。

解答 ア

 


問05

解説

 コンピュータに計算させると誤差が問題になる。誤差問題は、頻出である。

桁落ちとは、有効数字の桁数が実質的に現象する現象。

情報落ちとは、計算のした結果絶対値が小さい方の有効数字の桁数が無視される現象である。

1234 + 1.987 = 1235 となるので、小数点以下が切り捨てされいるので、情報落ち
- 1233 = 2 となり、この場合は、有効数字の桁が、1桁になり桁落ちが発生している。

よって、答えは、エとなる。

解答 

 


問06

解説

 流れ図の問題が出題されたときは、たいてい簡単である。見た瞬間面倒だなと思うが、気をとりなおして挑戦しよう。それほど時間はかからないが、予想外にかかるときがある。後回しが原則である。
 i = 1 とあるので、i = 1でループBは、j = 5,4,3,2まで実行するだけである。
よって、解答はイとなる。

解答 イ

 


問07

解説

 再帰アルゴリズムの問題ある。頻出である。
実際に代入して調べる。

g(4)
= g(3) + g(2)

ここで、さらにg(3)とg(2)は、それぞれ

g(3) = g(2) + g(1),g(2)=g(1) + g(0)であるので、

g(4)
= g(3) + g(2)
= g(2) + g(1) + g(1) + g(0)
= g(1) + g(0) + g(1) + 1 + 1
= 1 + 1 + 1 + 1 + 1

よって、実際には最後の式(1+1+1+1+1)で4回の加算が必要。

解答 イ

 


問08

解説

 効率、誤差を考慮した算式の変形問題である。ときどきしか、出題されていない。しかし、ソフトウエア技術者としては、重要な基礎能力と思われるので今後は増えるあろう。

 Y = X^5 + aX^4 + bX^3 + cX^2 + dX + e
  = X(X(X(X(X(X + a) + b) + c) + d) + e

よって乗算の回数は4回である。

 プログラムの実行において、乗算は、足し算、引き算に比べて処理時間がかかるので、減らした方がいい。

解答 ア

 


問09

解説

 流れ図の問題は、流れ図を見ずにどれだけ予想ができるかが、読みとり効率を増す。最大値選択は、比較回数は、nの2乗に比例する。また、nが使用してある問題は、小さな値を代入することで、たいてい解くことができる。

 比較であるので、n = 2として考えると、比較は1回しかしないはずである。よって、解答はイということが分かる。

解答 イ

 


問10

解説

 ツリー構造を利用したデータの保存の仕方に、B木、2分B木、平衡木などがある。詳細は調査中といことにしておこう。実は、詳細は、パスカルを考えたビルトの著作『アリゴリズムとデータ構造』近代科学社、ヴィルト著、浦昭二・國府方久史翻訳に詳しい。また、情報科学の最初の方によく扱っている話題である。手元の資料の整理がされていないのですぐにかけない。ここらへんのツリー構造は、いっぱいあって、うっとしいのでパスをしたいが、出題されたので、まとめます。あまり発展するネタでないので今まで無視をしいた。

 これからも出題される問題でしょう。

解答 ウ

 


spage@yscon.co.jp

末広ページへ このコーナーの目次へ