Dado un entero n y su base b . La tarea es verificar si el número dado es el Número Pandigital en la base dada o no. Un número Pandigital es un número entero que tiene cada dígito de su base al menos una vez.
Se puede suponer que la base es menor o igual a 36. En la base 36, los dígitos son [0, 1, …9. A, B, …Z]
Ejemplos:
Input : n = "9651723480", b = 10 Output : Yes Given number n has all digits from 0 to 9 Input : n = "23456789ABCDEFGHIJKLMNOPQRSTUVWXYZ", b = 36 Output : No Given number n doesn't have all digits in base 36. For example 1 is missing.
Cree una array hash booleana de tamaño igual a la base del número e inicialícela con falso. Ahora, itere cada dígito del número y marque su valor de índice correspondiente como verdadero en la array hash. Al final, verifique si todos los valores en la array hash están marcados o no, si están marcados, imprima «Sí», es decir, el número Pandigital, de lo contrario, imprima «No».
A continuación se muestra la implementación de este enfoque:
C++
// C++ program to check if a number is pandigital // in given base. #include<bits/stdc++.h> using namespace std; // Return true if n is pandigit else return false. bool checkPandigital(int b, char n[]) { // Checking length is less than base if (strlen(n) < b) return false; bool hash[b]; memset(hash, false, sizeof(hash)); // Traversing each digit of the number. for (int i = 0; i < strlen(n); i++) { // If digit is integer if (n[i] >= '0' && n[i] <= '9') hash[n[i] - '0'] = true; // If digit is alphabet else if (n[i] - 'A' <= b - 11) hash[n[i] - 'A' + 10] = true; } // Checking hash array, if any index is // unmarked. for (int i = 0; i < b; i++) if (hash[i] == false) return false; return true; } // Driver Program int main() { int b = 13; char n[] = "1298450376ABC"; (checkPandigital(b, n))? (cout << "Yes" << endl): (cout << "No" << endl); return 0; }
Java
// Java program to check if a number // is pandigital in given base. import java.util.*; class GFG { // Return true if n is pandigit // else return false. static boolean checkPandigital(int b, String n) { // Checking length is less than base if (n.length() < b) return false; boolean hash[] = new boolean[b]; Arrays.fill(hash, false); // Traversing each digit of the number. for (int i = 0; i < n.length(); i++) { // If digit is integer if (n.charAt(i) >= '0' && n.charAt(i) <= '9') hash[n.charAt(i) - '0'] = true; // If digit is alphabet else if (n.charAt(i) - 'A' <= b - 11) hash[n.charAt(i) - 'A' + 10] = true; } // Checking hash array, if any // index is unmarked. for (int i = 0; i < b; i++) if (hash[i] == false) return false; return true; } // Driver code public static void main(String[] args) { int b = 13; String n = "1298450376ABC"; if (checkPandigital(b, n)) System.out.println("Yes"); else System.out.println("No"); } } // This code is contributed by Anant Agarwal.
Python3
# Python3 program to check if a number is # pandigital in given base. # Return true if n is pandigit else return false. def checkPandigital(b, n): # Checking length is less than base if (len(n) < b): return 0; hash = [0] * b; # Traversing each digit of the number. for i in range(len(n)): # If digit is integer if (n[i] >= '0' and n[i] <= '9'): hash[ord(n[i]) - ord('0')] = 1; # If digit is alphabet else if (ord(n[i]) - ord('A') <= b - 11): hash[ord(n[i]) - ord('A') + 10] = 1; # Checking hash array, if any index is # unmarked. for i in range(b): if (hash[i] == 0): return 0; return 1; # Driver Code b = 13; n = "1298450376ABC"; if(checkPandigital(b, n)): print("Yes"); else: print("No"); # This code is contributed by mits
C#
// C# program to check if a number // is pandigital in given base. using System; class GFG { // Return true if n is pandigit // else return false. static bool checkPandigital(int b, string n) { // Checking length is less than base if (n.Length < b) return false; bool []hash = new bool[b]; for(int i = 0; i < b; i++) hash[i] = false; // Traversing each digit of the number. for (int i = 0; i < n.Length; i++) { // If digit is integer if (n[i] >= '0' && n[i] <= '9') hash[n[i] - '0'] = true; // If digit is alphabet else if (n[i] - 'A' <= b - 11) hash[n[i] - 'A' + 10] = true; } // Checking hash array, if any // index is unmarked. for (int i = 0; i < b; i++) if (hash[i] == false) return false; return true; } // Driver code public static void Main() { int b = 13; String n = "1298450376ABC"; if (checkPandigital(b, n)) Console.Write("Yes"); else Console.Write("No"); } } // This code is contributed by nitin mittal.
PHP
<?php // php program to check if a number is pandigital // in given base. // Return true if n is pandigit else return false. function checkPandigital($b, $n) { // Checking length is less than base if (strlen($n) < $b) return 0; $hash = array(); for($i = 0; $i< $b; $i++) $hash[$i] = 0; // Traversing each digit of the number. for ($i = 0; $i < strlen($n); $i++) { // If digit is integer if ($n[$i] >= '0' && $n[$i] <= '9') $hash[$n[$i] - '0'] = 1; // If digit is alphabet else if (ord($n[$i]) - ord('A') <= $b - 11) $hash[ord($n[$i]) - ord('A') + 10] = 1; } // Checking hash array, if any index is // unmarked. for ($i = 0; $i < $b; $i++) if ($hash[$i] == 0) return 0; return 1; } // Driver Program $b = 13; $n = "1298450376ABC"; if(checkPandigital($b, $n)) echo "Yes"; else echo "No"; // This code is contributed by Sam007. ?>
Javascript
<script> // Javascript program to check if a number is pandigital // in given base. // Return true if n is pandigit else return false. function checkPandigital(b, n) { // Checking length is less than base if (n.length < b) return 0; let hash = []; for(let i = 0; i< b; i++) hash[i] = 0; // Traversing each digit of the number. for (let i = 0; i < n.length; i++) { // If digit is integer if (n[i] >= '0' && n[i] <= '9') hash[n[i] - '0'] = 1; // If digit is alphabet else if (n.charCodeAt(i) - 'A'.charCodeAt(0) <= b - 11) hash[n.charCodeAt(i) - 'A'.charCodeAt(0) + 10] = 1; } // Checking hash array, if any index is // unmarked. for (let i = 0; i < b; i++) if (hash[i] == 0) return 0; return 1; } // Driver Program let b = 13; let n = "1298450376ABC"; if(checkPandigital(b, n)) document.write("Yes"); else document.write("No"); // This code is contributed by _saurabh_jaiswal. </script>
Producción:
Yes
Referencia:
https://en.wikipedia.org/wiki/Pandigital_number
Este artículo es una contribución de Anuj Chauhan . 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