// No.48 ロボットの操縦 package main import ( "fmt" ) const intSize = 32 << (^uint(0) >> 63) func abs(v int) int { y := v >> (intSize - 1) return (v ^ y) - y } func main() { var x, y, l int // 移動先X,移動先Y, 最大移動距離 fmt.Scan(&x, &y, &l) ans := 0 //命令数 // move x if x%l == 0 { ans += abs(x) / l } else { ans += (abs(x) / l) + 1 } // move y if y%l == 0 { ans += abs(y) / l } else { ans += (abs(y) / l) + 1 } // destination if y >= 0 { if x != 0 { ans += 1 } } else if y < 0 { ans += 2 } fmt.Println(ans) }