📌  相关文章
📜  查找不能用给定数字表示的最小正数

📅  最后修改于: 2021-04-29 11:32:13             🧑  作者: Mango

给定大小为10的数组arr [] ,其中arr [i]表示数字i的频率。任务是找到不能由给定数字表示的最小正数。
例子:

方法:

  1. 从第一个索引开始计算数组中的最小值,并存储它的索引。
  2. 现在,将最小值与第0个索引处的值进行比较。
  3. 如果它在第0个索引处的值小于最小值,则不能表示10、100、1000…。
  4. 如果其值大于最小值,则将循环迭代到第一个最小值索引,然后简单地打印索引值。

下面是上述方法的实现:

C++
// CPP program to find the smallest positive
// number which can not be represented by given digits
#include
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


输出:
22