公務員試験 2019年 国家一般職(教養) No.24解説

 問 題     

正の整数を入力すると,次の条件①~⑤に従って計算した結果を出力するプログラムがある。正の整数を入力してから結果が出力されるまでを1 回の操作とし, 1 回目の操作では初期値を入力する。また, 2 回目以降の操作では,その前の操作で出力された結果を入力する。いま,条件⑤の一部が分からなくなっているが,■ には1 , 2 , 3 のうちいずれかが入ることが分かっている。

このプログラムに1 を初期値として入力すると,何回目かの操作で出力された数字が10 となった。このプログラムに初期値として1 , 2 , 3 をそれぞれ入力したとき,それぞれの初期値に対して7 回目の操作で出力される数字を合計するといくらか。

ただし,条件に複数該当する場合は,最も番号の小さい条件だけが実行されるものとする。

[条件]
① 入力された数字が1 の場合, 1 足す。
② 入力された数字が2 の倍数の場合, 3 足す。
③ 入力された数字が3 の倍数の場合, 1 引く。
④ 入力された数字が5 の倍数の場合, 2 足す。
⑤ 条件①~④に該当しない場合,■ 引く。

1. 28
2. 30
3. 32
4. 34
5. 36

 

 

 

 

 

正解 (3)

 解 説     

条件5がわからないとどうしようもないので、■ が1,2,3のどれかをしぼります。

1を初期値として入力すると
1→ 条件 ① より、+1 して 「2」→ 条件 ② より、+3して「5」→条件 ④ より 7です。ここで初めて条件 ⑤ です。まとめると、以下のようになります。

次がもしも 「2引く」だと、7→5→条件 ④より、+2して「7」→条件 ⑤ より5・・・とループしてしまいます。同様に、「3引く」だと、4→条件②より、+3して「7」となり、やはりループしてしまいます。どちらも「何回目かの操作で出力された数字が 10 となった」という条件を満たしません。従って、条件 ⑤ は「1引く」です。 

後は続きを考えます。7→条件⑤より、-1して「6」→ ② より、+3して「9」→ ③ より、-1して「8」→条件 ② より+3して11です。

初期値が2だった場合ですが
初期値1の場合の1回目の操作の後から始まったと考えればよいです。従って、先程よりも1回だけ操作を長くすればよいです。11→条件 ⑤ より、-1して「10」です。これが初期値2の場合の、7回目の操作で出力される数字です。

初期値が3だった場合ですが
3→条件 ③ より、-1して「2」となります。これは冒頭の値が違うだけで、初期値1の場合と同じ数値の変化となります。よって、7回目の操作で出力されるのは「11」です。

11+10+11=32が合計です

以上より、正解は 3 です。

コメント