#! ruby X = gets.to_i Y = gets.to_i L = gets.to_i # 頭の中を整理するためメモ # 目的地が原点のとき # 方向転換も移動も不要 if X == 0 && Y == 0 puts "0" # 目的地がY軸上(X=0)のとき、横移動は必要ない # 目的地が北(Y>0)のとき # 方向転換は必要ない # ceil(Y / L) 回の移動 # 目的地が南(Y<0)のとき # 2回方向転換が必要 # ceil(abs(Y) / L) 回の移動 elsif X == 0 if Y > 0 puts (Y.to_f / L.to_f).ceil else puts (2 + (Y.abs.to_f / L.to_f).ceil) end # 目的地がX軸上(Y=0)のとき、縦移動は必要ない # 1回方向転換が必要 # ceil(abs(X) / L) 回の移動 elsif Y == 0 puts (1 + (X.abs.to_f / L.to_f).ceil) # 上記以外のケース # 目的地が北側(Y>0)にあるとき # 北に ceil(Y/L) 回移動 # 1回方向転換で横向きに # ceil(abs(X)/L)回移動 # 目的地が南側(Y<0)にあるとき # 1回方向転換して横向きに # ceil(abs(X)/L)回移動 # 1回方向転換して南向きに # ceil(abs(Y)/L)回移動 else if Y > 0 puts ((Y.to_f/L.to_f).ceil + 1 + (X.abs.to_f/L.to_f).ceil) else puts (1 + (X.abs.to_f/L.to_f).ceil + 1 + (Y.abs.to_f/L.to_f).ceil) end end