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:
- Iterar de N a 0 .
- 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 .
- De lo contrario, incremente el contador y continúe el bucle hasta que N sea 0 .
- 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>
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