技術士の過去問
平成28年度(2016年)
基礎科目「情報・論理に関するもの」 問9
このページは閲覧用ページです。
履歴を残すには、 「新しく出題する(ここをクリック)」 をご利用ください。
問題
技術士 第一次試験 平成28年度(2016年) 基礎科目「情報・論理に関するもの」 問9 (訂正依頼・報告はこちら)
自然数Nに対して、Nを2で割った商にNの値を更新する操作を行い、この操作をNが0になるまで繰り返す。このとき、それぞれの割り算で出てきた余りの値を逆に並べたものがNの2進数表示となる。
例えば、N=11から始めると、
11÷2=5余り1
5÷2=2余り1
2÷2=1余り0
1÷2=0余り1
であり、出てきた余り( 1101 )を逆に並べた( 1011 )が11の2進数表示である。
このアルゴリズムを次のような流れ図で表した。流れ図中の、( ア )~( ウ )に入る式又は記号として、最も適切なものはどれか。
例えば、N=11から始めると、
11÷2=5余り1
5÷2=2余り1
2÷2=1余り0
1÷2=0余り1
であり、出てきた余り( 1101 )を逆に並べた( 1011 )が11の2進数表示である。
このアルゴリズムを次のような流れ図で表した。流れ図中の、( ア )~( ウ )に入る式又は記号として、最も適切なものはどれか。
![問題文の画像](https://s3.ap-northeast-1.amazonaws.com/img.kakomonn.com/images/question/gijyutushi/2016/9.jpg)
- ア:N>0 イ:N=0 ウ:Nを2で割った商
- ア:N>0 イ:N=0 ウ:Nを2で割った余り
- ア:N=0 イ:N>0 ウ:Nを2で割った商
- ア:N=0 イ:N>0 ウ:Nを2で割った余り
- ア:N>0 イ:N=0 ウ:2N
正解!素晴らしいです
残念...
Advertisement
この過去問の解説 (4件)
01
図に示されているのは、10進法を2進法に変換するアルゴリズムになります。
(ア)N > 0 (イ)N = 0
図を見ると、アの作業はループ作業を表していることがわかります。
問題文より、ある自然数 N の値から、N が 0 になるまでループするので、ループの条件は N > 0、ループの終了条件は N = 0 となります。
(ウ)Nを2で割った商
問題文に「Nを2で割った商にNの値を更新する操作」とあることから、Nを2で割った商が正解です。
よって、各作業の穴埋めは、
(ア)N > 0 (イ)N = 0 (ウ)Nを2で割った商
となることから、1が正解です。
参考になった数11
この解説の修正を提案する
02
10進数を2進数に変換するアルゴリズムのフローチャートを穴埋めする問題です。
題意から次の3つのことが分かります。
・Nの値はNを2で割った商に更新すること
・Nが0でないとき、すなわちN>0のときは、処理を繰り返すこと
・ループを脱出するのは、N=0になったときであること
以上から、各選択肢について内容を確認すると以下の通りです。
1.正しいです。
上記解説の3つを満たしています。
2.誤りです。
Nの値はNを2で割った商に更新するので、ウが違います。
3.誤りです。
N>0のとき処理を繰り返し、N=0のとき処理を抜けるのが要件なので、
ア、イが違います。
4.誤りです。
N>0のとき処理を繰り返し、N=0のとき処理を抜けること、
Nの値はNを2で割った商に更新することが必要なので、ア、イ、ウが違います。
5.誤りです。
Nの値はNを2で割った商に更新する必要があります。
また、Nの値にNを2倍した値を代入すると、N=0にならなくなり、
処理が延々と続いてしまうので、ウが間違いです。
したがって、1が正解です。
参考になった数4
この解説の修正を提案する
03
正解は1です。
アルゴリズムは未経験者が説く場合難しいのでスルーしたほうが良いですが、他の問題が選べない場合など、どうしても選択せざるを得なかった場合は値を入れてトレースしていくのが良いと思います(時間はかかりますが)
ただし、今回の問題はそこまでしなくても解けます。
まずN=11で開始してみましょう、
I=ー1を入れています。
ここでNと0を比較していますが、N=11なのでN>0です。
ここで(イ)がN>0だといきなり処理が終了してしまうことがわかります。
何も定義されていないA[x]の配列を出力しておしまいです。
ということはアがN>0でイがN=0ということがわかります。
次にA[I]がNを2で割ったあまりなのに、NもNを2で割ったあまりだったらおかしいですね。
同じ値を違う変数に入れるという意味になってしまうので。
またNを2倍してしまうといつまでたったもN=0にならないので無限ループとなってしまいます。
従って アがN>0、イがN=0、ウがNを2で割った商となる1が正解です。
参考になった数3
この解説の修正を提案する
04
自然数Nに対して、2進数表示をするための式と流れ図から
①商が0より大きい間は、2で割って、余りを記録し、商はもう一度2で割る
②商が0になったら終了し2進数表示をする
この二つの流れに区別できます。
①では、Nを2で割った余りをA[I]として記録し、商を次のNとして、元の分岐に戻り、Nと0を比較しますが、②であれば、(イ)の方向に進み、2進数表示が完了します。
Nが0より大きければ、(ア)の方向に進み、再度Nを2で割ります。
以上より、ア:N>0、イ:N=0、ウ:Nを2で割った商となりますので、
1が正解です。
参考になった数2
この解説の修正を提案する
前の問題(問8)へ
平成28年度(2016年)問題一覧
次の問題(問10)へ