// No.48 ロボットの操縦 // https://yukicoder.me/problems/no/48 // #include #include using namespace std; int solve(int X, int Y, int L); int main() { int X, Y, L; cin >> X >> Y >> L; int ans = solve(X, Y, L); cout << ans << endl; } int solve(int X, int Y, int L) { int ans = 0; bool x_changed = false; // x軸方向に移動するために向きを変える必要があったか bool y_changed = false; // y軸方向を南側に移動するために向きを変える必要があったか double dL = L; // y軸方向の移動に必要な命令回数 if (Y > 0) { ans += ceil(Y / dL); } else if (Y < 0 ) { y_changed = true; ans += ceil(abs(Y) / dL); } // x軸方向の移動に必要な命令回数 if (X != 0) { x_changed = true; ans += ceil(abs(X) / dL); } // 方向転換に必要な命令回数 if (y_changed) { ans += 2; } else if (x_changed) { ans += 1; } return ans; }