Encuentre el número positivo más pequeño que no se puede representar con los dígitos dados

Dada una array arr[] de tamaño 10 donde arr[i] representa la frecuencia del dígito i . La tarea es encontrar el número positivo más pequeño que no pueda ser representado por los dígitos dados.
Ejemplos: 
 

Entrada: arr[] = {2, 1, 1, 4, 0, 6, 3, 2, 2, 2} 
Salida:
Dado que la cuenta del cuarto dígito es 0, entonces no se puede hacer 4.
Entrada: arr[] = {0, 1, 1, 1, 1, 1, 1, 1, 1, 1} 
Salida: 10 
Dado que la cuenta del dígito 0 es 0, el entero positivo más pequeño que no se puede hacer es 10
Entrada: arr [] = {2, 2, 1, 2, 1, 1, 3, 1, 1, 1} 
Salida: 22 
Para hacer 22 necesitamos dos 2, pero aquí la cuenta de 2 es solo 1. 
 

Acercarse: 
 

  1. Calcule el valor mínimo en la array a partir del primer índice y también almacene su índice.
  2. Ahora compare el valor mínimo con el valor en el índice 0.
  3. Si su valor en el índice 0 es menor que el valor mínimo de 10, 100, 1000… no se puede expresar.
  4. Si su valor es mayor que el valor mínimo, itere el bucle hasta el primer índice de valor mínimo y simplemente imprima su valor de índice.

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

C++

// CPP program to find the smallest positive
// number which can not be represented by given digits
#include<bits/stdc++.h>
using namespace std;
 
// Function to find the smallest positive
// number which can not be represented by given digits
void expressDigit(int arr[], int n){
     
    int min = 9, index = 0, temp = 0;
     
    // Storing the count of 0 digit
    // or store the value at 0th index
    temp = arr[0];
     
    // Calculates the min value in the array starting
    // from 1st index and also store it index.
    for(int i = 1; i < 10; i++){
         
        if(arr[i] < min){
            min = arr[i];
            index = i;
        }
    }
     
    // Now compare the min value with the
    // value at 0th index.
     
    // If its value at 0th index is less than min value
    // than either 10, 100, 1000 ... can't be expressed
    if(temp < min)
    {
        cout << 1;
        for(int i = 1; i <= temp + 1; i++)
            cout << 0;
    }
     
     
    // If it value is greater than min value than
    // iterate the loop upto first min value index
    // and simply print it index value.
    else
    {
        for(int i = 0; i < min; i++)
            cout << index;
         
        cout << index;
    }
}
 
// Driver code
int main()
{
    int arr[] = {2, 2, 1, 2, 1, 1, 3, 1, 1, 1};
     
    // Value of N is always 10 as we take digit from 0 to 9
    int N = 10;
     
    // Calling function
    expressDigit(arr, N);
     
    return 0;
     
}

Java

// Java program to find the smallest positive
// number which can not be represented by given digits
import java.util.*;
 
class GFG
{
 
// Function to find the smallest positive
// number which can not be represented by given digits
static void expressDigit(int arr[], int n)
{
    int min = 9, index = 0, temp = 0;
     
    // Storing the count of 0 digit
    // or store the value at 0th index
    temp = arr[0];
     
    // Calculates the min value in the array starting
    // from 1st index and also store it index.
    for(int i = 1; i < 10; i++)
    {
        if(arr[i] < min)
        {
            min = arr[i];
            index = i;
        }
    }
     
    // Now compare the min value with the
    // value at 0th index.
     
    // If its value at 0th index is less than min value
    // than either 10, 100, 1000 ... can't be expressed
    if(temp < min)
    {
        System.out.print(1);
        for(int i = 1; i <= temp + 1; i++)
            System.out.print(0);
    }
     
    // If it value is greater than min value than
    // iterate the loop upto first min value index
    // and simply print it index value.
    else
    {
        for(int i = 0; i < min; i++)
            System.out.print(index);
         
        System.out.print(index);
    }
}
 
// Driver code
public static void main(String[] args)
{
    int arr[] = {2, 2, 1, 2, 1, 1, 3, 1, 1, 1};
     
    // Value of N is always 10
    // as we take digit from 0 to 9
    int N = 10;
     
    // Calling function
    expressDigit(arr, N);
}
}
 
// This code is contributed by 29AjayKumar

Python3

# Python3 program to find the
# smallest positive number which
# can not be represented by given digits
 
# Function to find the smallest
# positive number which can not be
# represented by given digits
def expressDigit(arr, n):
 
    min = 9
    index = 0
 
    temp = 0
 
    # Storing the count of 0 digit
    # or store the value at 0th index
    temp = arr[0]
 
    # Calculates the min value in
    # the array starting from
    # 1st index and also store its index.
    for i in range(1, 10):
 
        if(arr[i] < min):
            min = arr[i]
            index = i
 
    # Now compare the min value with the
    # value at 0th index.
 
    # If its value at 0th index is
    # less than min value than either
    # 10, 100, 1000 ... can't be expressed
    if(temp < min):
        print(1, end = "")
        for i in range(1, temp + 1):
            print(0, end = "")
 
    # If its value is greater than
    # min value then iterate the loop
    # upto first min value index and
    # simply print its index value.
    else:
        for i in range(min):
            print(index, end = "")
 
        print(index)
 
# Driver code
arr = [2, 2, 1, 2, 1,
       1, 3, 1, 1, 1]
 
# Value of N is always 10
# as we take digit from 0 to 9
N = 10
 
# Calling function
expressDigit(arr, N)
 
# This code is contributed by Mohit Kumar

C#

// C# program to find the smallest positive
// number which can not be represented by given digits
using System;
 
class GFG
{
 
// Function to find the smallest positive
// number which can not be represented by given digits
static void expressDigit(int []arr, int n)
{
    int min = 9, index = 0, temp = 0;
     
    // Storing the count of 0 digit
    // or store the value at 0th index
    temp = arr[0];
     
    // Calculates the min value in the array starting
    // from 1st index and also store it index.
    for(int i = 1; i < 10; i++)
    {
        if(arr[i] < min)
        {
            min = arr[i];
            index = i;
        }
    }
     
    // Now compare the min value with the
    // value at 0th index.
     
    // If its value at 0th index is less than min value
    // than either 10, 100, 1000 ... can't be expressed
    if(temp < min)
    {
        Console.Write(1);
        for(int i = 1; i <= temp + 1; i++)
            Console.Write(0);
    }
     
    // If it value is greater than min value than
    // iterate the loop upto first min value index
    // and simply print it index value.
    else
    {
        for(int i = 0; i < min; i++)
            Console.Write(index);
         
        Console.Write(index);
    }
}
 
// Driver code
public static void Main(String[] args)
{
    int []arr = {2, 2, 1, 2, 1, 1, 3, 1, 1, 1};
     
    // Value of N is always 10
    // as we take digit from 0 to 9
    int N = 10;
     
    // Calling function
    expressDigit(arr, N);
}
}
 
// This code is contributed by 29AjayKumar

Javascript

<script>
// javascript program to find the smallest positive
// number which can not be represented by given digits
 
    // Function to find the smallest positive
    // number which can not be represented by given digits
    function expressDigit(arr, n)
    {
        var min = 9, index = 0, temp = 0;
 
        // Storing the count of 0 digit
        // or store the value at 0th index
        temp = arr[0];
 
        // Calculates the min value in the array starting
        // from 1st index and also store it index.
        for (i = 1; i < 10; i++)
        {
            if (arr[i] < min)
            {
                min = arr[i];
                index = i;
            }
        }
 
        // Now compare the min value with the
        // value at 0th index.
 
        // If its value at 0th index is less than min value
        // than either 10, 100, 1000 ... can't be expressed
        if (temp < min)
        {
            document.write(1);
            for (i = 1; i <= temp + 1; i++)
                document.write(0);
        }
 
        // If it value is greater than min value than
        // iterate the loop upto first min value index
        // and simply print it index value.
        else {
            for (i = 0; i < min; i++)
                document.write(index);
 
            document.write(index);
        }
    }
 
    // Driver code
        var arr = [ 2, 2, 1, 2, 1, 1, 3, 1, 1, 1 ];
 
        // Value of N is always 10
        // as we take digit from 0 to 9
        var N = 10;
 
        // Calling function
        expressDigit(arr, N);
 
// This code is contributed by gauravrajput1
</script>
Producción: 

22

 

Publicación traducida automáticamente

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