Cuente los movimientos mínimos necesarios para convertir A en B

Dados dos enteros A y B , convierta A en B realizando una de las siguientes operaciones cualquier número de veces:

  • UN = UN + K
  • A = A – K , donde K pertenece a [1, 10]

La tarea es encontrar el número mínimo de operaciones requeridas para convertir A en B utilizando las operaciones anteriores.

Ejemplos:

Entrada: A = 13, B = 42
Salida: 3
Explicación:
Se puede realizar la siguiente secuencia de movimientos: 13 → 23 → 32 → 42 (suma 10, suma 9, suma 10).

Entrada: A = 18, B = 4
Salida: 2
Explicación:
Se puede realizar la siguiente secuencia de movimientos: 18 → 10 → 4 (restar 8, restar 6).

Enfoque: La idea es simplemente calcular el número requerido de movimientos dividiendo la diferencia absoluta de A y B por todos los números en el rango [1…10] y sumándolo a la variable resultante. Siga los pasos a continuación para resolver el problema:

  • Inicialice una variable required_moves para almacenar el recuento mínimo de movimientos necesarios.
  • Encuentre la diferencia absoluta de A y B.
  • Iterar sobre el rango [1, 10] y realizar las siguientes operaciones: 
    • Divide el número por i y súmalo a la variable resultante.
    • Calcule el módulo de la diferencia absoluta por i
  • Finalmente, imprime el valor de required_moves .

A continuación se muestra la implementación del enfoque anterior:

C++

// C++ program for the above approach
 
#include <bits/stdc++.h>
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

<script>
 
// Javascript program to implement
// the above approach
 
// Function to find minimum number
// of moves to obtained B from A
function convertBfromA(a, b)
{
      
    // Stores the minimum
    // number of moves
    let moves = 0;
  
    // Absolute difference
    let x = Math.abs(a - b);
  
    // K is in range [0, 10]
    for(let i = 10; i > 0; i--)
    {
        moves += Math.floor(x / i);
        x = x % i;
    }
  
    // Print the required moves
    document.write(moves + " ");
}
 
// Driver Code
 
    let A = 188, B = 4;
  
    convertBfromA(A, B);
                 
</script>
Producción: 

19

 

Complejidad de tiempo: O(K), donde K está en el rango [0, 10]
Espacio auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por ranjeetkumar_chill y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *