Número pandigital en una base dada

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *