Skip to content
Related Articles
Count minimum moves required to convert A to B
• Difficulty Level : Medium
• Last Updated : 07 May, 2021

Given two integers A and B, convert A to B by performing one of the following operations any number of times:

• A = A + K
• A = A – K, where K belongs to [1, 10]

The task is to find the minimum number of operations required to convert A to B using the above operations.

Examples:

Input: A = 13, B = 42
Output: 3
Explanation:
The following sequence of moves can be performed: 13 → 23 → 32 → 42(add 10, add 9, add 10).

Input: A = 18, B = 4
Output: 2
Explanation:
The following sequence of moves can be performed: 18 → 10 → 4 (subtract 8, subtract 6).

Approach: The idea is to simply calculate the required number of moves by dividing the absolute difference of A and B by all the numbers in the range [1…10] and adding it to the resultant variable. Follow the steps below to solve the problem:

• Initialize a variable required_moves to store the minimum count of moves required.
• Find the absolute difference of A and B.
• Iterate over the range [1, 10] and perform the following operations:
• Divide the number by i and add it to the resultant variable.
• Calculate modulo of absolute difference by i

• Finally, print the value of required_moves.

Below is the implementation of the above approach:

## C++

 `// C++ program for the above approach` `#include ``using` `namespace` `std;` `// Function to find minimum number``// of moves to obtained B from A``void` `convertBfromA(``int` `a, ``int` `b)``{``    ``// Stores the minimum``    ``// number of moves``    ``int` `moves = 0;` `    ``// Absolute difference``    ``int` `x = ``abs``(a - b);` `    ``// K is in range [0, 10]``    ``for` `(``int` `i = 10; i > 0; i--) {``        ``moves += x / i;``        ``x = x % i;``    ``}` `    ``// Print the required moves``    ``cout << moves << ``" "``;``}` `// Driver Code``int` `main()``{``    ``int` `A = 188, B = 4;` `    ``convertBfromA(A, B);` `    ``return` `0;``}`

## Java

 `// Java program for the above approach``import` `java.io.*;` `class` `GFG{` `// Function to find minimum number``// of moves to obtained B from A``static` `void` `convertBfromA(``int` `a, ``int` `b)``{``    ` `    ``// Stores the minimum``    ``// number of moves``    ``int` `moves = ``0``;` `    ``// Absolute difference``    ``int` `x = Math.abs(a - b);` `    ``// K is in range [0, 10]``    ``for``(``int` `i = ``10``; i > ``0``; i--)``    ``{``        ``moves += x / i;``        ``x = x % i;``    ``}` `    ``// Print the required moves``    ``System.out.print(moves + ``" "``);``}` `// Driver Code``public` `static` `void` `main (String[] args)``{``    ``int` `A = ``188``, B = ``4``;` `    ``convertBfromA(A, B);``}``}` `// This code is contributed by code_hunt`

## Python3

 `# Python3 program for the above approach` `# Function to find minimum number``# of moves to obtained B from A``def` `convertBfromA(a, b):``    ` `    ``# Stores the minimum``    ``# number of moves``    ``moves ``=` `0` `    ``# Absolute difference``    ``x ``=` `abs``(a ``-` `b)` `    ``# K is in range [0, 10]``    ``for` `i ``in` `range``(``10``, ``0``, ``-``1``):``        ``moves ``+``=` `x ``/``/` `i``        ``x ``=` `x ``%` `i``    ` `    ``# Print the required moves``    ``print``(moves, end ``=` `" "``)` `# Driver Code``A ``=` `188``B ``=` `4` `convertBfromA(A, B)` `# This code is contributed by code_hunt`

## C#

 `// C# program for the above approach ``using` `System;` `class` `GFG{` `// Function to find minimum number``// of moves to obtained B from A``static` `void` `convertBfromA(``int` `a, ``int` `b)``{``    ` `    ``// Stores the minimum``    ``// number of moves``    ``int` `moves = 0;` `    ``// Absolute difference``    ``int` `x = Math.Abs(a - b);` `    ``// K is in range [0, 10]``    ``for``(``int` `i = 10; i > 0; i--)``    ``{``        ``moves += x / i;``        ``x = x % i;``    ``}` `    ``// Print the required moves``    ``Console.Write(moves + ``" "``);``}` `// Driver Code``public` `static` `void` `Main ()``{``    ``int` `A = 188, B = 4;` `    ``convertBfromA(A, B);``}``}` `// This code is contributed by code_hunt`

## Javascript

 ``
Output:
`19`

Time Complexity: O(K), where K is in the range [0, 10]
Auxiliary Space: 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