Convertir a número con dígitos como 3 y 8 solamente

Un número encantador es un número que solo consta de 3 y 8 como dígitos. Nos dan un número de n dígitos, tiene un total de tres operaciones: 
 

  1. Sumar 1 al número dado.
  2. Restar 1 al número dado.
  3. Seleccionando un dígito de número y reemplazándolo con cualquier otro dígito deseado.

Necesitamos encontrar el número total de operaciones para cambiar un número dado a un número encantador.
Ejemplos: 
 

Input : num = 343
Output : Minimum Operation = 1

Input : num = 88
Output : Minimum operation = 0

Antes de pasar a la solución adecuada, echemos un vistazo más de cerca a las operaciones dadas. 
 

  1. Al agregar 1 al número dado, contará 1 operación y lo que puede hacer es incrementar el último dígito en 1 a menos que sea 9 y si el último dígito es 9, también cambiará los dígitos que preceden al último. Entonces, en el mejor de los casos, si el último dígito es 2 o 7, esta operación los cambiará a 3 u 8 al costo de 1 operación.
  2. Restar 1 al número dado, también contará 1 como operación y solo disminuirá el último dígito a menos que sea 0. Entonces, en el mejor de los casos, si el último dígito es 4 o 9, esta operación los cambiará a 3 u 8 al costo de 1 operación. .
  3. Seleccionar cualquier dígito y cambiar su valor contará como una sola operación, pero seguramente cambiará de dígito a dígito encantador, es decir, 3 u 8. Por lo tanto, en el mejor y en el peor de los casos, esta operación cambiará un solo dígito a la vez.

Por lo tanto, para encontrar la operación mínima, la suma y la resta no nos serán útiles y solo se seleccionará y cambiará el número de dígitos que no sea igual a 3 u 8. Entonces, el número total de dígitos que no sea igual a 3 u 8 será nuestra respuesta.
 

C++

// CPP to find min operations required to
// convert into charming number
#include <bits/stdc++.h>
using namespace std;
 
// function for minimum operation
int minOp(long long int num)
{
    // remainder and operations count
    int rem;
    int count = 0;
 
    // count digits not equal to 3 or 8
    while (num) {
        rem = num % 10;
        if (!(rem == 3 || rem == 8))
            count++;
        num /= 10;
    }
    return count;
}
 
// driver function
int main()
{
    long long int num = 234198;
    cout << "Minimum Operations =" << minOp(num);
    return 0;
}

Java

// Java to find min operations required to
// convert into charming number
class GFG
{
     
    // function for minimum operation
    static int minOp(int num)
    {
         
        // remainder and operations count
        int rem;
        int count = 0;
     
        // count digits not equal to 3 or 8
        while (num>0) {
            rem = num % 10;
            if (!(rem == 3 || rem == 8))
                count++;
            num /= 10;
        }
         
        return count;
    }
     
    // Driver code
    public static void main (String[] args)
    {
        int num = 234198;
         
        System.out.print("Minimum Operations ="+minOp(num));
    }
}
 
// This code is contributed by Anant Agarwal.

Python3

# Python to find min
# operations required to
# convert into charming number
 
# function for minimum operation
def minOp(num):
 
    # remainder and operations count
    count = 0
  
    #count digits not equal to 3 or 8
    while (num):
        rem = num % 10
        if (not(rem == 3 or rem == 8)):
            count=count + 1
        num = num // 10
     
    return count
 
# Driver code
 
num = 234198
print("Minimum Operations =" ,minOp(num))
 
# This code is contributed
# by Anant Agarwal.

C#

// C# to find min operations required to
// convert into charming number
using System;
 
class GFG
{
     
    // function for minimum operation
    static int minOp(int num)
    {
         
        // remainder and operations count
        int rem;
        int count = 0;
     
        // count digits not equal to 3 or 8
        while (num > 0)
        {
            rem = num % 10;
            if (! (rem == 3 || rem == 8))
                count++;
            num /= 10;
        }
         
        return count;
    }
     
    // Driver code
    public static void Main ()
    {
        int num = 234198;
     
        Console.WriteLine("Minimum Operations =" +
                           minOp(num));
    }
}
 
// This code is contributed by vt_m.

PHP

<?php
// PHP to find min operations required to
// convert into charming number
 
// function for minimum operation
function minOp($num)
{
     
    // remainder and operations count
    $count = 0;
 
    // count digits not equal to 3 or 8
    while ($num)
    {
        $rem = intval($num % 10);
        if (!($rem == 3 || $rem == 8))
            $count++;
        $num = intval($num / 10);
    }
    return $count;
}
     
    // Driver Code
    $num = 234198;
    echo "Minimum Operations = " . minOp($num);
     
// This code is contributed by Sam007
?>

Javascript

<script>
 
 
// Javascript to find min operations required to
// convert into charming number
 
// function for minimum operation
function minOp(num)
{
    // remainder and operations count
    var rem;
    var count = 0;
 
    // count digits not equal to 3 or 8
    while (num) {
        rem = num % 10;
        if (!(rem == 3 || rem == 8))
            count++;
        num = parseInt(num/10);
    }
    return count;
}
 
// driver function
var num = 234198;
document.write( "Minimum Operations = " + minOp(num));
 
</script>

Producción: 
 

Minimum Operations = 4

Publicación traducida automáticamente

Artículo escrito por Shivam.Pradhan 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 *