Número más pequeño que se restará para convertir el número dado en un palíndromo

Dado un número entero N , la tarea es encontrar el número más pequeño a restar de N para obtener un palíndromo .

Ejemplos:

Entrada: N = 1000
Salida: 1
Explicación: Dado que 1000 – 1 = 999, que es un palíndromo, el número más pequeño a restar es 1.

Entrada: N = 3456
Salida: 13
Explicación: Dado que 3456 – 13 = 3443, que es un palíndromo, el número más pequeño a restar es 13.

Enfoque: siga los pasos a continuación para resolver el problema:

  1. Iterar de N a 0 .
  2. Inicializar un contador . En cada iteración, invierta el valor reducido de N y compárelo con el valor actual de N. Si ambos son iguales, imprime el valor del contador .
  3. De lo contrario, incremente el contador y continúe el bucle hasta que N sea 0 .
  4. Imprime el valor del contador .

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

C++

// C++ program for the above approach
#include <iostream>
using namespace std;
 
// Function to evaluate minimum
// subtraction required to make
// a number palindrome
void minSub(int N)
{
 
    // Counts number of
    // subtractions required
    int count = 0;
 
    // Run a loop till N>=0
    while (N >= 0) {
 
        // Store the current number
        int num = N;
 
        // Store reverse of current number
        int rev = 0;
 
        // Reverse the number
        while (num != 0) {
            int digit = num % 10;
            rev = (rev * 10) + digit;
            num = num / 10;
        }
 
        // Check if N is palindrome
        if (N == rev) {
 
            break;
        }
 
        // Increment the counter
        count++;
 
        // Reduce the number by 1
        N--;
    }
 
    // Print the result
    cout << count;
}
 
// Driver Code
int main()
{
    int N = 3456;
 
    // Function call
    minSub(N);
    return 0;
}

Java

// Java program for the
// above approach
import java.util.*;
class GFG{
 
// Function to evaluate minimum
// subtraction required to make
// a number palindrome
static void minSub(int N)
{
  // Counts number of
  // subtractions required
  int count = 0;
 
  // Run a loop till N>=0
  while (N >= 0)
  {
    // Store the current
    // number
    int num = N;
 
    // Store reverse of
    // current number
    int rev = 0;
 
    // Reverse the number
    while (num != 0)
    {
      int digit = num % 10;
      rev = (rev * 10) + digit;
      num = num / 10;
    }
 
    // Check if N is
    // palindrome
    if (N == rev)
    {
      break;
    }
 
    // Increment the counter
    count++;
 
    // Reduce the number
    // by 1
    N--;
  }
 
  // Print the result
  System.out.print(count);
}
 
// Driver Code
public static void main(String[] args)
{
  int N = 3456;
 
  // Function call
  minSub(N);
}
}
 
// This code is contributed by 29AjayKumar

Python3

# Python3 program for the above approach
 
# Function to evaluate minimum
# subtraction required to make
# a number palindrome
def minSub(N):
     
    # Counts number of
    # subtractions required
    count = 0
 
    # Run a loop till N>=0
    while (N >= 0):
         
        # Store the current number
        num = N
 
        # Store reverse of current number
        rev = 0
 
        # Reverse the number
        while (num != 0):
            digit = num % 10
            rev = (rev * 10) + digit
            num = num // 10
 
        # Check if N is palindrome
        if (N == rev):
            break
 
        # Increment the counter
        count += 1
 
        # Reduce the number by 1
        N -= 1
 
    # Print the result
    print(count)
 
# Driver Code
if __name__ == '__main__':
     
    N = 3456
 
    # Function call
    minSub(N)
 
# This code is contributed by bgangwar59

C#

// C# program for the
// above approach
using System;
 
class GFG{
 
// Function to evaluate minimum
// subtraction required to make
// a number palindrome
static void minSub(int N)
{
   
  // Counts number of
  // subtractions required
  int count = 0;
 
  // Run a loop till N>=0
  while (N >= 0)
  {
     
    // Store the current
    // number
    int num = N;
 
    // Store reverse of
    // current number
    int rev = 0;
 
    // Reverse the number
    while (num != 0)
    {
      int digit = num % 10;
      rev = (rev * 10) + digit;
      num = num / 10;
    }
     
    // Check if N is
    // palindrome
    if (N == rev)
    {
      break;
    }
 
    // Increment the counter
    count++;
 
    // Reduce the number
    // by 1
    N--;
  }
 
  // Print the result
  Console.Write(count);
}
 
// Driver Code
public static void Main(String[] args)
{
  int N = 3456;
   
  // Function call
  minSub(N);
}
}
 
// This code is contributed by gauravrajput1

Javascript

<script>
 
// Javascript program for the
// above approach
 
// Function to evaluate minimum
// subtraction required to make
// a number palindrome
function minSub(N)
{
     
    // Counts number of
    // subtractions required
    let count = 0;
     
    // Run a loop till N>=0
    while (N >= 0)
    {
         
        // Store the current
        // number
        let num = N;
         
        // Store reverse of
        // current number
        let rev = 0;
         
        // Reverse the number
        while (num != 0)
        {
            let digit = num % 10;
            rev = (rev * 10) + digit;
            num = Math.floor(num / 10);
        }
         
        // Check if N is
        // palindrome
        if (N == rev)
        {
            break;
        }
         
        // Increment the counter
        count++;
         
        // Reduce the number
        // by 1
        N--;
    }
     
    // Print the result
    document.write(count);
}
 
// Driver Code
let N = 3456;
 
// Function call
minSub(N);
 
// This code is contributed by souravghosh0416
 
</script>
Producción: 

13

 

Complejidad temporal: O(N * K), donde K es el número de dígitos del entero.
Espacio Auxiliar: O(1)

Publicación traducida automáticamente

Artículo escrito por mishrapriyanshu557 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 *