【備忘録】令和元年度秋 応用情報 午前の計算問題

最近、応用情報の復習をしている。

正直、知識問題は覚えるだけなので特に解説することもないと思う。

しかし、計算問題はしっかり意味を理解しておかないと本番で計算ができない。

というわけで、今回から応用情報の計算問題をひたすら解説していく。

基本的に1回の試験に出てくる問題を1記事でまとめていくため、長めの記事になることは許していただきたい。

今回は、「令和元年度 秋季 応用情報技術者試験 午前」に出てくる計算問題だ。

問題まで書いているとさらにに長くなるので、基本的には上に貼った公式のPDFを参照してほしい。

なお、もし間違いを見つけたら教えてくれると嬉しい…

では、早速始めていこう。

スポンサーリンク

問1

これは進数の問題だ。

4と9を使用しないため、部屋番号は8進数となっている。

つまり、8進数で0330という数が10進数でいくつになっているかを求めればいい。

求めたい0330は、どの桁も4以下であるため、使用しない数字のずれを気にすることなく変換できる。

計算式は以下の通り。

$$
\begin{eqnarray}
& & 3 \times 8^2 + 3 \times 8^1 + 0 \times 8^0 \\
& = & 192 + 24 + 0 \\
& = & 216
\end{eqnarray}
$$

よって、答えはの216となる。

問2

集合の問題だ。

これはベン図を書くのが一番手っ取り早いのだが、ちょっとPC上で書くのが面倒なので、別アプローチで試してみよう。

集合の中身を具体的に考えて、一致するものはどれか確認していく

まず、全体集合\(S\)、その異なる部分集合\(A\)、\(B\)を以下のように決めておこう。

$$S = \{1, 2, 3, 4, 5, 6\}$$

$$A = \{2, 4, 6\}$$

$$B = \{3, 6\}$$

イメージだが、サイコロの目全体を\(S\)、偶数の目を\(A\)、3の倍数の目を\(B\)としている。

これについて、まずは問題にある\(\bar A \cap \bar B\)を求めると…

$$\bar A \cap \bar B = \{1, 3, 5\} \cap \{1, 2, 4, 5\} = \{1, 5\}$$

となる。

では、選択肢それぞれを見ていこう。

まずアについて。

$$\bar A – B = \{1, 3, 5\} – \{3, 6\} = \{1, 5\}$$

というわけで、いきなり答えが出てきてしまったが、正解はになる。

念のため、イ以降も見てみよう。

イについて。

$$
\begin{eqnarray}
& & (\bar A \cup \bar B) – (A \cap B) \\
& = & (\{1, 3, 5\} \cup \{1, 2, 4, 5\}) – (\{2, 4, 6\} \cap \{3, 6\}) \\
& = & \{1, 2, 3, 4, 5\} – \{6\} \\
& = & \{1, 2, 3, 4, 5\}
\end{eqnarray}
$$

ウについて。

$$
\begin{eqnarray}
& & (S – A) \cup (S – B) \\
& = & \bar A \cup \bar B \\
& = & \{1, 3, 5\} \cup \{1, 2, 4, 5\} \\
& = & \{1, 2, 3, 4, 5\}
\end{eqnarray}
$$

エについて。

$$
\begin{eqnarray}
& & S – (A \cap B) \\
& = & \{1, 2, 3, 4, 5, 6\} – (\{2, 4, 6\} \cap \{3, 6\}) \\
& = & \{1, 2, 3, 4, 5, 6\} – \{6\} \\
& = & \{1, 2, 3, 4, 5\}
\end{eqnarray}
$$

ということで、イからエは全て問題の式とは異なることがわかった。

そして、イからエは全て同じ集合を表している。

ちなみに、解説サイトなどでベン図を見てもイからエは同じ部分を指していることが分かると思う。

問3

M/M/1に関する計算式の問題だ。

…なのだが、実はM/M/1を知らなくても解ける

要するに、以下の式で\(r\)がいくつ以上のときに\(A \geq B\)となるかを聞かれているだけだ。

$$A = B \times \frac{r}{1-r}$$

これを言い換えると、「\(r\)がいくつ以上のときに、分数部分が1以上となるか」だ。

不等式を作って解いてみよう。

$$
\begin{eqnarray}
1 & \leq & \frac{r}{1-r} \\
1 – r & \leq & r \\
1 & \leq & 2r \\
0.5 & \leq & r
\end{eqnarray}
$$

というわけで、0.5以上、答えはとなる。

問7

二つのハッシュ値が衝突する条件を聞かれている。

ハッシュ関数は、数値を\(n\)で割った余りを求めているので、この余りが一致した場合に衝突する、ということになる。

ここで、二つの数\(a, b\)を\(n\)で割った余りが\(x\)で一致したとする。

すると、自然数\(A, B\)を使って、\(a, b\)は以下のように表せる。

  • \(a = An + x\)
  • \(b = Bn + x\)

さて、なんとなく次に何をすればいいか分かるだろうか。

大きい方を\(a\)にして、そこから\(b\)を引いてみよう。

$$a – b = (An + x) – (Bn + x) = n(A – B)$$

というわけで、これは\(n\)の倍数だ。

これに合致する答えはになる。

問10

選択肢に難しそうな式が並んでいるが、落ち着いて見ていこう。

まず、命令キャッシュと主記憶それぞれにアクセスする割合を考える。

命令コードがキャッシュに存在しない確率を\(r\)としているので、これがそのまま主記憶にアクセスする割合だ。

キャッシュへアクセスする割合は、1から\(r\)を引いたものになる。

次に、命令キャッシュへは\(x\)ナノ秒、主記憶へは\(y\)ナノ秒の時間がかかると言われている。

あとは、それぞれに割合を掛けてあげればいい。

つまり、式としては以下のようになる。

$$(1-r) \times x + r \times y$$

よって、答えはだ。

この問題のいやらしいところは、本来は関係ない容量も定義されているところ。

本当にその情報が必要か、しっかり確認しよう。

問15

ちょっと複雑そうに見えて実は簡単な問題。

今、並列で3件の処理が行える状況にある。

1件の処理は3つのブロックに分かれていて、ある処理の書き込みをしているとき、次の処理のCPU処理、さらにその次の読み取りを同時に実行している状況だ。

…ということは、3つのブロックそれぞれの時間が書かれているが、結局は一番長い書き込みの50ミリ秒が完了するごとに、新しい処理が開始されることになる。

というわけで、50ミリ秒ごとに1件処理が増えていく

あとはひたすら計算だ。

聞かれているのは1分間で行える処理件数なので、ミリ秒に直すと60000ミリ秒になる。

これを50で割ればいいので…

$$60000 \div 50 = 1200$$

となり、が正解になる。

問17

条件が非常に長いが、そんなに難しくはない。

Aから実際に処理を追っていこう。

まず、Aが実行されるタイミングで50MBの一時ファイルが磁気ディスクに生成される。

そして、Aが終了した段階ではまだファイルは残っており、そのままB, Cが開始。

このタイミングで、B, C用の一時ファイルも生成されるので、計150MBだ。

B, Cの処理が完了すると、Aの一時ファイルが削除されるので100MBに減る。

その後、D, Eが開始され、また一時ファイルができるので計200MB

D, Eの終了時にB, Cの分の一時ファイルが削除されて100MB

そして、最後にFが開始され、+50MBで150MB

あとは削除だけなので、増えることはない。

この中で、容量が最大なのは200MBだ。

というわけで、この分だけあれば最低大丈夫なので、答えはとなる。

問19

ファイル割り当ての問題だ。

次々にファイルが来るので、それを3つの領域に以下の条件で入れていくだけだ。

  • 一番空き容量が大きい領域に入れる
  • 同じ空き容量の領域がある場合、A, B, Cの順に入れる
  • A, B, Cは最初は全て空、かつ全体の容量は全て同じ

というわけで、実際に入れていこう。

新しく格納したところに、その時点での合計を入れてみる。

領域903040407030
A90
B3070100
C40110
割り当ての様子

これで、割り当てられた領域の大きい順に並べるので、C, B, Aの順、が正解になる。

問20

個人的にちょっと躓いた問題だ。

入力の数値に応じて、出力電圧を変化させることができる装置がある。

入力は分解能が8ビットなので、0から255の256段階になる。

これで、128を入力すると2.5Vが出力される。

ということは、入力値を128変化させると出力電圧が2.5V変化するということなので、単純に割ってあげればいい。

しかも、選択肢は分数なので、そのまま2.5/128、が答えになる。

用語を知らなかったので惑わされたが、分かってしまえばなんてことはないだろう。

問23

論理回路の問題。

先に注意点だが、求める偶数パリティビットとは、1の個数が偶数となるように変化するビットだ。

つまり、今回の場合は入力における1の数が奇数の場合に1となればいい。

偶数の場合に1を出力する、ではないので気を付けよう。

これを踏まえて、入力に対する各出力を見ていこう。

\(x_1\)\(x_2\)\(x_3\)\(x_1\) AND \(x_2\)アの\(c\)イの\(c\)\(x_1\) XOR \(x_2\)ウの\(c\)エの\(c\)
000001001
001010010
010001110
011010101
100001110
101010101
110110001
111110010
論理回路の入出力

これを見ると、が適切になる。

偶数パリティビットという用語を知らないとエを選びかねないので注意だ。

問31

正直、分かっていない用語もあるが、それでも解けてしまう。

まず、8kビット/秒の音声符号化と書いてあるので、1秒ごとに8kビットの容量があることが分かる。

最後に聞かれる単位がバイトなので、先に8で割ってバイトに直すと、1kバイトだ。

次に、パケット生成周期が10ミリ秒なので、秒間のパケット数に直すと100パケットとなる。

1kバイト=1000バイトで100パケットなので、1パケットあたりは割り算で10バイト、が答えになる。

問52

よくある作業工数の問題だ。

まず、短縮前の所要日数とその時のクリティカルパスを求める。

ルートとそれぞれの所要日数は以下の通り。

  • A→B→E→G:16日
  • A→B→E→H:19日
  • A→C→D→E→G:28日
  • A→C→D→E→H:31日
  • A→C→F→H:28日

この時点での所要日数は31日、その時のA→C→D→E→Hがクリティカルパスとなる。

このとき、Dの作業が6日短縮できるので、三つ目、四つ目が4日分早まる。

  • A→B→E→G:16日
  • A→B→E→H:19日
  • A→C→D→E→G:24日
  • A→C→D→E→H:27日
  • A→C→F→H:28日

というわけで、クリティカルパスが変わり、日数も28日になった。

よって、減らせるのは3日が答えとなる。

単に、短縮前の日数から4を引けばいいわけではないことに注意だ。

問54

まず、要員をどのように調達するかを考えてみる。

できるだけ安くしたいので、同じ2ヶ月分の作業をしてもらおうと思ったときに、要員Cが一番安くなる

Cだけに任せられればいいのだが、2ヶ月で全体を完了させなければいけない

というわけで、Cにyかzを2ヶ月かけて任せる。

どっちにしても同じなので、zを任せたとしよう。

残り、xを任せる要員は2ヶ月、yを任せる要員は1ヶ月契約となる。

安い要員Bを長くした方が得なので、xを任せる。

残る要員Aにyを任せると、結果的に以下のような期間の契約になる。

  • 要員A(プログラムy):1ヶ月
  • 要員B(プログラムx):2ヶ月
  • 要員C(プログラムz):2ヶ月

あとは月単価と掛け合わせればいい。

$$
\begin{eqnarray}
& & 1 \times 1000 + 2 \times 900 + 2 \times 400 \\
& = & 1000 + 1800 + 800 \\
& = & 3600
\end{eqnarray}
$$

ということで、答えはだ。

問64

特に難しいことを考えることなく、ゴリゴリ計算していこう。

欲しい情報は、満点がいくつになるかと、実際いくつだったかだ。

まず満点から求めていくが、その前に点数の決め方を定義してしまおう。

単純に、4段階評価の数字に重みを掛け、それらを足し合わせたものが合計得点とする。

これで満点を計算すると、

$$5 \times 3 + 8 \times 3 + 12 \times 3 = 75$$

というわけで、75点満点だ。

で、実際を計算すると…

$$5 \times 3 + 8 \times 0 + 12 \times 1 = 27$$

ということで、27点だったようだ。

あとは割合を出せばいいので…

$$\frac{27}{75} = 0.36$$

よって、36%のが答えになる。

問74

なかなかに厄介な問題だ。

単純に、計算する量が多い

落ち着いて、一個一個見ていこう。

やるべきは、施策a, bそれぞれの期待値を求めること。

とはいえ、一発では求まらないので、順番に見ていく。

まず、施策aを選んだ上で、途中にある追加費用を払うか払わないかの2択をどうするか決めよう。

追加費用を払わない場合は、単純に売上増加額が50億円となるので、追加費用を払う場合の期待値を求める。

確率0.3で200億円、確率0.7で100億円の売上増加なので、期待値を求めると…

$$0.3 \times 200 + 0.7 \times 100 = 60 + 70 = 130$$

より、130億円の売上増加となる。

ここに、追加費用60億円も加味すると、130 – 60 = 70となり、追加費用を払った場合の期待値は70億円となる。

つまり、追加費用を払わない場合の50億円よりも高いので、ここでの選択は追加を払う部分だけ気にすればよくなる

では、施策aの最初の分岐を見てみよう。

確率0.4で今計算した70億円のプラス、確率0.6で120億円のプラスだ。

ということで、同じように期待値を計算する。

$$0.4 \times 70 + 0.6 \times 120 = 28 + 72 = 100$$

ここに、aの最初の費用が絡んでくるので、100 – 30 = 70。

よって、施策aを選んだ場合の売上増加額の期待値は、70億円ということがわかった。

この時点で、選択肢イは不適切とわかり、選択肢中のbの期待値も両方70より大きいので、アも違うと分かった。

では、同じようにして施策bを選んだ場合も求めていこう。

まず、追加費用の選択肢について。

費用を払う場合の期待値は、

$$0.4 \times 150 + 0.6 \times 100 = 60 + 60 = 120$$

費用の40を引いて、期待値80億円だ。

追加費用を払わない場合は70億円なので、やはり払った方がいいことになる。

ということで、bを選んだ場合、確率0.3で80億円、確率0.7で140億円となるので…

$$0.3 \times 80 + 0.7 \times 140 = 24 + 98 = 122$$

bの最初の費用は40億円なので、122 – 40 = 82、よって施策bの期待値は82億円となった。

以上から、選択肢が正解だ。

計算が多いので、何を求めなければいけなくて、それをどう求めるかを一つずつ確認しながら進めていこう。

問77

損益分岐点分析の問題だ。

だいぶ長くなっているので、サクッといこう。

まず、問題で提示されている表をこちらにも載せておく。

(単位:万円)A社B社
売上2,0002,000
変動費8001,400
固定費900300
営業利益300300
A社、B社の情報

では、順番に求めていこう。

まずは損益分岐点売上…を求めるために、変動費率を求めていく。

変動費率売上に対する変動費の割合なので、まずA社は、

$$\frac{800}{2000} = 0.4$$

次にB社は、

$$\frac{1400}{2000} = 0.7$$

となることが分かる。

次に、損益分岐点売上を求めていく。

求める式を以下に載せておこう。

$$損益分岐点売上 = 固定費 \times \frac{1}{1 – 変動費率}$$

これを使って求めていくと、まずA社。

$$900 \times \frac{1}{1 – 0.4} = \frac{900}{0.6} = 1500$$

次にB社。

$$300 \times \frac{1}{1 – 0.7} = \frac{300}{0.3} = 1000$$

よって、各社の損益分岐点売上は、A社が1,500万円、B社が1,000万円となった。

A社の方が高いので、選択肢のエは誤りだ。

さらに、選択肢のイも見ていこう。

売上が3,000万円の場合、変動費は変動費率から求められ、固定費は変わらない。

そのため、新しく表を作ると…

(単位:万円)A社B社
売上3,0003,000
変動費1,2002,100
固定費900300
営業利益900600
売上が3,000万円の場合

このようになる。

よって、営業利益はA社の方が高いので、選択肢イも間違いだ。

では、次は選択肢のアだ。

安全余裕率は以下の式で求められる。

$$安全余裕率 = \frac{売上 – 損益分岐点売上}{売上}$$

これで求めると、まずA社は、

$$\frac{2000 – 1500}{2000} = \frac{500}{2000} = 0.25$$

次に、B社は、

$$\frac{2000 – 1000}{2000} = \frac{1000}{2000} = 0.5$$

よって、Bの方が安全余裕率が高いので、選択肢のが正しい。

ちなみに、選択肢のエも見てみよう。

まず、限界利益率は以下の式で求められる。

$$限界利益率 = \frac{限界利益}{売上} = \frac{売上 – 変動費}{売上}$$

それでは、A社から。

$$\frac{2000 – 800}{2000} = \frac{1200}{2000} = 0.6$$

次に、B社。

$$\frac{2000 – 1400}{2000} = \frac{600}{2000} = 0.3$$

よって、A社の方が限界利益率が高いので、エも誤りで問題ない

このように、損益分岐点分析の問題は、色々な数字を出さなければいけない。

それぞれが、どのような計算で求めることができるかをしっかりと覚えておこう。

コメント

タイトルとURLをコピーしました