Skip to content
Related Articles

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 <bits/stdc++.h>
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




<?php
// PHP 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
function countSteps($x, $y)
{
    if ($x < $y)
    {
        return $x + $y + 2 *
             (($y - $x) / 2);
    }
    else
    {
        return $x + $y + 2 *
            ((($x - $y) + 1) / 2);
    }
}
 
// Driver Code
$x = 4; $y = 3;
echo(countSteps($x, $y));
 
// This code is contributed
// by Code_Mech.
?>

Javascript




<script>
 
    // Javascript 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
    function countSteps(x, y)
    {
      if (x < y) {
        return x + y + 2 * parseInt((y - x) / 2);
      }
      else {
        return x + y + 2 * parseInt(((x - y) + 1) / 2);
      }
    }
 
    // Driver Code
    var x = 4, y = 3;
    document.write(countSteps(x, y));
 
// This code is contributed by rrrtnx.
  </script>
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
Recommended Articles
Page :