Given two integers A and B, the task is to find the minimum number of moves needed to make A equal to B by incrementing or decrementing the A by either 1, 2, or 5 any number of times.
Examples:
Input: A = 4, B = 0
Output: 2
Explanation:
Perform the operation as follows:
- Decreasing the value of A by 2, modifies the value of A to (4 – 2) = 2.
- Decreasing the value of A by 2 modifies the value of A to (2 – 2) = 0. Which is equal to B.
Therefore, the number of moves required is 2.
Input: A = 3, B = 9
Output: 2
Approach: The given problem can be solved by using the Greedy Approach. The idea is to first find the increment or decrements of 5, then 2, and then 1 is needed to convert A to B. Follow the steps below to solve the problem:
- Update the value of A as the absolute difference between A and B.
- Now, print the value of (A/5) + (A%5)/2 + (A%5)%2 as the minimum number of increments or decrements of 1, 2, or 5 to convert A into B.
Below is the implementation of the above approach:
// C++ program for the above approach #include <bits/stdc++.h> using namespace std;
// Function to find minimum number of // moves required to convert A into B int minimumSteps( int a, int b)
{ // Stores the minimum number of
// moves required
int cnt = 0;
// Stores the absolute
// difference
a = abs (a - b);
// FInd the number of moves
cnt = (a / 5) + (a % 5) / 2 + (a % 5) % 2;
// Return cnt
return cnt;
} // Driver Code int main()
{ // Input
int A = 3, B = 9;
// Function call
cout << minimumSteps(A, B);
return 0;
} |
// Java program for the above approach import java.io.*;
class GFG
{ // Function to find minimum number of
// moves required to convert A into B
static int minimumSteps( int a, int b)
{
// Stores the minimum number of
// moves required
int cnt = 0 ;
// Stores the absolute
// difference
a = Math.abs(a - b);
// FInd the number of moves
cnt = (a / 5 ) + (a % 5 ) / 2 + (a % 5 ) % 2 ;
// Return cnt
return cnt;
}
// Driver Code
public static void main(String[] args)
{
// Input
int A = 3 , B = 9 ;
// Function call
System.out.println(minimumSteps(A, B));
}
} // This code is contributed by Potta Lokesh
|
# python program for the above approach # Function to find minimum number of # moves required to convert A into B def minimumSteps(a, b):
# Stores the minimum number of
# moves required
cnt = 0
# Stores the absolute
# difference
a = abs (a - b)
# FInd the number of moves
cnt = (a / / 5 ) + (a % 5 ) / / 2 + (a % 5 ) % 2
# Return cnt
return cnt
# Driver Code # Input A = 3
B = 9
# Function call print (minimumSteps(A, B))
# This code is contributed by amreshkumar3. |
// C# program for the above approach using System;
using System.Collections.Generic;
class GFG{
// Function to find minimum number of // moves required to convert A into B static int minimumSteps( int a, int b)
{ // Stores the minimum number of
// moves required
int cnt = 0;
// Stores the absolute
// difference
a = Math.Abs(a - b);
// FInd the number of moves
cnt = (a / 5) + (a % 5) / 2 + (a % 5) % 2;
// Return cnt
return cnt;
} // Driver Code public static void Main()
{ // Input
int A = 3, B = 9;
// Function call
Console.Write(minimumSteps(A, B));
} } // This code is contributed by SURENDRA_GANGWAR |
<script> // JavaScript program for the above approach
// Function to find minimum number of
// moves required to convert A into B
function minimumSteps(a, b)
{
// Stores the minimum number of
// moves required
let cnt = 0;
// Stores the absolute
// difference
a = Math.abs(a - b);
// FInd the number of moves
cnt = Math.floor(a / 5) + Math.floor((a % 5) / 2) + (a % 5) % 2;
// Return cnt
return cnt;
}
// Driver Code
// Input
let A = 3, B = 9;
// Function call
document.write(minimumSteps(A, B));
// This code is contributed by Potta Lokesh
</script>
|
2
Time Complexity: O(1)
Auxiliary Space: O(1)