JOI logo
第24回日本情報オリンピック 一次予選(第1回)

2024年9月16日
情報オリンピック日本委員会

問題
  散歩 (Walking) (配点 100点)
  時間制限 : 2 sec / メモリ制限 : 1024 MB

解説

整数の入力,足し算,掛け算,割り算,条件分岐,および整数の出力ができれば解くことのできる問題である.

条件分岐により X の偶奇で場合分けをし,上述の値を出力すればよい (C++ による解答例を参照).

また,整数の切り捨て除算を用いると X の偶奇に依らない形で移動距離を表すことができ,3 ×X ÷ 2+ (-2) ×X ÷ 2= 3 ×(X+1) ÷ 2+ (-2) ×X ÷ 2 ⌋ を出力することでも正解となる (Python による解答例を参照). ここで,⌈ x ⌉は x 以上の最小の整数を, ⌊ y ⌋ は y 以下の最大の整数を表す.

一般に,整数 a, b (b ≧ 1) について ⌈ a ÷ b ⌉ = ⌊ (a+b-1) ÷ b ⌋ となることは,切り捨て除算によりプログラムを簡潔にするテクニックとして覚えておいて損はない.

このほか,行動 A,B 合わせて k (1 ≦ k ≦ X) 回目の行動において,k が奇数ならば行動 A を,k が偶数ならば行動 B を行うことに注目し,k = 1, 2, … , X についてループ処理を行うことでも正解を得ることができる.