Encuentra todos los números menores que n, que son palindrómicos. Los números se pueden imprimir en cualquier orden.
Ejemplos:
Input : n = 12 Output : 1, 2, 3, 4, 5, 6, 7, 8, 9, 11 Input : n = 104 Output : 1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 33, 44, 55, 66, 77, 88, 99, 101 [Note that below program prints these numbers in different order]
Fuerza Bruta: Comprobamos todos los números del 1 al n si su representación decimal es palíndromo o no.
Enfoque Eficiente: Partimos de 1 y creamos palíndromos de dígitos pares e impares hasta n. Para cada número (a partir de 1), agregamos su reverso al final si necesitamos números palíndromos de longitud uniforme. Para palíndromos de longitud impar, agregamos el reverso de todos los dígitos excepto el último.
C++
// A C++ program to generate palindromic numbers // less than n. #include <iostream> using namespace std; // A utility for creating palindrome int createPalindrome(int input, int b, bool isOdd) { int n = input; int palin = input; // checks if number of digits is odd or even // if odd then neglect the last digit of input in // finding reverse as in case of odd number of // digits middle element occur once if (isOdd) n /= b; // Creates palindrome by just appending reverse // of number to itself while (n > 0) { palin = palin * b + (n % b); n /= b; } return palin; } // Function to print decimal palindromic number void generatePalindromes(int n) { int number; // Run two times for odd and even length palindromes for (int j = 0; j < 2; j++) { // Creates palindrome numbers with first half as i. // Value of j decided whether we need an odd length // of even length palindrome. int i = 1; while ((number = createPalindrome(i, 10, j % 2)) < n) { cout << number << " "; i++; } } } // Driver Program to test above function int main() { int n = 104; generatePalindromes(n); return 0; }
Java
// A Java program to generate palindromic // numbers less than n. class GFG { // A utility for creating palindrome static int createPalindrome(int input, int b, int isOdd) { int n = input; int palin = input; // checks if number of digits is odd or even // if odd then neglect the last digit of input in // finding reverse as in case of odd number of // digits middle element occur once if (isOdd == 1) n /= b; // Creates palindrome by just appending reverse // of number to itself while (n > 0) { palin = palin * b + (n % b); n /= b; } return palin; } // Function to print decimal // palindromic number static void generatePalindromes(int n) { int number; // Run two times for odd and even // length palindromes for (int j = 0; j < 2; j++) { // Creates palindrome numbers with first // half as i. Value of j decided whether // we need an odd length of even length // palindrome. int i = 1; while ((number = createPalindrome(i, 10, j % 2)) < n) { System.out.print(number + " "); i++; } } } // Driver code public static void main(String[] args) { int n = 104; generatePalindromes(n); } } // This code is contributed by Anant Agarwal.
Python3
# Generate all palindromic numbers less than n # A Python program to generate palindromic numbers # less than n. def createPalindrome(inp, b, isOdd): n = inp palin = inp # checks if number of digits is odd or even # if odd then neglect the last digit of input in # finding reverse as in case of odd number of # digits middle element occur once if (isOdd): n = n // b # Creates palindrome by just appending reverse # of number to itself while (n > 0): palin = palin * b + (n % b) n = n // b return palin # Function to print decimal palindromic number def generatePalindromes(n): # Run two times for odd and even length palindromes for j in range(2): # Creates palindrome numbers with first half as i. # Value of j decided whether we need an odd length # of even length palindrome. i = 1 while (createPalindrome(i, 10, j % 2) < n): print (createPalindrome(i, 10, j % 2),end=" ") i = i + 1 # Driver Program to test above function n = 104 generatePalindromes(n) #This code is contributed by Afzal Ansari
C#
// A C# program to generate palindromic // numbers less than n. using System; class GFG { // A utility for creating palindrome static int createPalindrome(int input, int b, int isOdd) { int n = input; int palin = input; // checks if number of digits is odd // or even if odd then neglect the // last digit of input in finding reverse // as in case of odd number of digits // middle element occur once if (isOdd == 1) n /= b; // Creates palindrome by just appending // reverse of number to itself while (n > 0) { palin = palin * b + (n % b); n /= b; } return palin; } // Function to print decimal // palindromic number static void generatePalindromes(int n) { int number; // Run two times for odd and even // length palindromes for (int j = 0; j < 2; j++) { // Creates palindrome numbers with first // half as i. Value of j decided whether // we need an odd length of even length // palindrome. int i = 1; while ((number = createPalindrome(i, 10, j % 2)) < n) { Console.Write(number + " "); i++; } } } // Driver Code public static void Main() { int n = 104; generatePalindromes(n); } } // This code is contributed by Nitin Mittal.
PHP
<?php // PHP program to generate // palindromic numbers less than n. // A utility function for // creating palindrome function createPalindrome($input, $b, $isOdd) { $n = $input; $palin = $input; // checks if number of digits is // odd or even if odd then neglect // the last digit of input in finding // reverse as in case of odd number // of digits middle element occur once if ($isOdd) $n = intval($n / $b); // Creates palindrome by just appending // reverse of number to itself while ($n > 0) { $palin = $palin * $b + intval($n % $b); $n = intval($n / $b); } return $palin; } // Function to print decimal // palindromic number function generatePalindromes($n) { $number = 0; // Run two times for odd and // even length palindromes for ($j = 0; $j < 2; $j++) { // Creates palindrome numbers // with first half as i. Value // of j decided whether we need // an odd length of even length // palindrome. $i = 1; while (($number = createPalindrome($i, 10, $j % 2)) < $n) { echo $number . " "; $i++; } } } // Driver Code $n = 104; generatePalindromes($n); // This code is contributed by Sam007 ?>
Javascript
<script> // A Javascript program to generate palindromic // numbers less than n. // A utility for creating palindrome function createPalindrome(input, b, isOdd) { let n = input; let palin = input; // checks if number of digits is odd // or even if odd then neglect the // last digit of input in finding reverse // as in case of odd number of digits // middle element occur once if (isOdd == 1) n = parseInt(n / b, 10); // Creates palindrome by just appending // reverse of number to itself while (n > 0) { palin = palin * b + (n % b); n = parseInt(n / b, 10); } return palin; } // Function to print decimal // palindromic number function generatePalindromes(n) { let number; // Run two times for odd and even // length palindromes for (let j = 0; j < 2; j++) { // Creates palindrome numbers with first // half as i. Value of j decided whether // we need an odd length of even length // palindrome. let i = 1; while ((number = createPalindrome(i, 10, j % 2)) < n) { document.write(number + " "); i++; } } } let n = 104; generatePalindromes(n); // This code is contributed by divyesh072019. </script>
Producción :
11 22 33 44 55 66 77 88 99 1 2 3 4 5 6 7 8 9 101
Tenga en cuenta que el programa anterior no imprime la salida en orden ordenado. Para imprimir en orden ordenado, podemos almacenar palíndromos en un vector y ordenarlo, y no olvide usar el archivo de encabezado requerido.
Este artículo es una contribución de Shivam Pradhan (anuj_charm) . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks.
Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA