問 題
正の整数を入力すると,次の条件①~⑤に従って計算した結果を出力するプログラムがある。正の整数を入力してから結果が出力されるまでを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
解 説
条件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 です。
コメント