Related Articles
Number of steps required to reach point (x,y) from (0,0) using zig-zag way
• Difficulty Level : Hard
• Last Updated : 25 Mar, 2021

Given a coordinate (x, y). The task is to calculate the number of steps required to reach point (x, y) from (0, 0) using zig-zag way and you cannot travel in straight line for more than 1 unit. Also, start moving along Y axis.
For example we can reach the Point denoted by red color in the respective ways as shown in the below diagram: Examples:

```Input: x = 4, y = 4
Output: 8
In the diagram above the line is passing
using 8 steps.

Input: x = 4, y = 3
Output: 9

Input: x = 2, y = 1
Output: 5```

Approach: By sketching a small diagram we can see the two cases:

• Case 1: If x is less than y then answer will always be x + y + 2*((y-x)/2).
• Case 2: If x is greater than equal to y then answer will always be x + y + 2*(((x-y)+1)/2).

Below is the implementation of the above approach:

## C++

 `// C++ program to find the number of steps``// required to reach (x, y) from (0, 0) following``// a zig-zag path` `#include ``using` `namespace` `std;` `// Function to return the required position``int` `countSteps(``int` `x, ``int` `y)``{``    ``if` `(x < y) {``        ``return` `x + y + 2 * ((y - x) / 2);``    ``}``    ``else` `{``        ``return` `x + y + 2 * (((x - y) + 1) / 2);``    ``}``}` `// Driver Code``int` `main()``{``    ``int` `x = 4, y = 3;``    ``cout << countSteps(x, y);` `    ``return` `0;``}`

## Java

 `// Java program to find the number of steps``// required to reach (x, y) from (0, 0) following``// a zig-zag path` `class` `GfG``{` `// Function to return the required position``static` `int` `countSteps(``int` `x, ``int` `y)``{``    ``if` `(x < y)``    ``{``        ``return` `x + y + ``2` `* ((y - x) / ``2``);``    ``}``    ``else``    ``{``        ``return` `x + y + ``2` `* (((x - y) + ``1``) / ``2``);``    ``}``}` `// Driver Code``public` `static` `void` `main(String[] args)``{``    ``int` `x = ``4``, y = ``3``;``    ``System.out.println(countSteps(x, y));``}``}` `// This code is contributed by Prerna Saini`

## Python3

 `# Python3 program to find the number of``# steps required to reach (x, y) from``# (0, 0) following a zig-zag path``  ` `# Function to return the required position``def` `countSteps(x, y):`` ` `    ``if` `x < y:``        ``return` `x ``+` `y ``+` `2` `*` `((y ``-` `x) ``/``/` `2``)``     ` `    ``else``:``        ``return` `x ``+` `y ``+` `2` `*` `(((x ``-` `y) ``+` `1``) ``/``/` `2``)` `# Driver Code``if` `__name__ ``=``=` `"__main__"``:`` ` `    ``x, y ``=` `4``, ``3``    ``print``(countSteps(x, y))``  ` `# This code is contributed by Rituraj Jain`

## C#

 `// C# program to find the number of steps``// required to reach (x, y) from (0, 0) ``// following a zig-zag path``using` `System;` `class` `GfG``{` `// Function to return the required position``static` `int` `countSteps(``int` `x, ``int` `y)``{``    ``if` `(x < y)``    ``{``        ``return` `x + y + 2 * ((y - x) / 2);``    ``}``    ``else``    ``{``        ``return` `x + y + 2 * (((x - y) + 1) / 2);``    ``}``}` `// Driver Code``public` `static` `void` `Main()``{``    ``int` `x = 4, y = 3;``    ``Console.WriteLine(countSteps(x, y));``}``}` `// This code is contributed by Code_Mech.`

## PHP

 ``

## Javascript

 ``
Output:
`9`

Time Complexity: O(1)

Attention reader! Don’t stop learning now. Get hold of all the important mathematical concepts for competitive programming with the Essential Maths for CP Course at a student-friendly price. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

My Personal Notes arrow_drop_up