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: 4
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:
- Calcule el valor mínimo en la array a partir del primer índice y también almacene su índice.
- Ahora compare el valor mínimo con el valor en el índice 0.
- Si su valor en el índice 0 es menor que el valor mínimo de 10, 100, 1000… no se puede expresar.
- 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>
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