|
2024年9月16日
情報オリンピック日本委員会
|
整数の入力,足し算,掛け算,割り算,条件分岐,および整数の出力ができれば解くことのできる問題である.
条件分岐により 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 についてループ処理を行うことでも正解を得ることができる.