Рубрики

Найти число натуральных чисел, меньших или равных N, которые имеют нечетное число цифр

Для заданного целого числа N, где 1 ≤ N ≤ 10 5 , задача состоит в том, чтобы найти число натуральных чисел, меньших или равных N, которые имеют нечетное число цифр без начальных нулей.

Примеры:

Input: N = 11
Output: 9
1, 2, 3, …, 8 and 9 are the numbers ≤ 11
with odd number of digits.

Input: N = 893
Output: 803

Наивный подход: переход от 1 до N и для каждого номера проверяют, содержит ли он нечетные цифры или нет.

Эффективный подход: для ценностей:

  • Когда N <10, то число действительных чисел будет N.
  • Когда N / 10 <10, то 9 .
  • Когда N / 100 <10, то 9 + N — 99 .
  • Когда N / 1000 <10, то 9 + 900 .
  • Когда N / 10000 <10, тогда 909 + N — 9999 .
  • В противном случае 90909 .

Ниже приведена реализация вышеуказанного подхода:

C ++

// C ++ реализация подхода
#include <bits/stdc++.h>

using namespace std;

  
// Функция для возврата номера
// положительные целые числа меньше или равны
// к N, которые имеют нечетное количество цифр

int odd_digits(int n)

{

    if (n < 10)

        return n;

    else if (n / 10 < 10)

        return 9;

    else if (n / 100 < 10)

        return 9 + n - 99;

    else if (n / 1000 < 10)

        return 9 + 900;

    else if (n / 10000 < 10)

        return 909 + n - 9999;

    else

        return 90909;

}

  
// Код драйвера

int main()

{

    int n = 893;

  

    cout << odd_digits(n);

  

    return 0;

}

Джава

// Java реализация подхода

class GFG 

{

  
// Функция для возврата номера
// положительные целые числа меньше или равны
// к N, которые имеют нечетное количество цифр

static int odd_digits(int n)

{

    if (n < 10)

        return n;

    else if (n / 10 < 10)

        return 9;

    else if (n / 100 < 10)

        return 9 + n - 99;

    else if (n / 1000 < 10)

        return 9 + 900;

    else if (n / 10000 < 10)

        return 909 + n - 9999;

    else

        return 90909;

}

  
// Код драйвера

public static void main(String []args) 

{

    int n = 893;

  

    System.out.println(odd_digits(n));

}
}

  
// Этот код предоставлен 29AjayKumar

python3

# Python3 реализация подхода

  
# Функция для возврата количества
# целых положительных чисел меньше или равно
# до N, которые имеют нечетное количество цифр

def odd_digits(n) :

  

    if (n < 10) :

        return n; 

    elif (n / 10 < 10) :

        return 9

    elif (n / 100 < 10) :

        return 9 + n - 99

    elif (n / 1000 < 10) :

        return 9 + 900

    elif (n / 10000 < 10) : 

        return 909 + n - 9999

    else :

        return 90909

  
# Код драйвера

if __name__ == "__main__"

  

    n = 893

  

    print(odd_digits(n)); 

  
# Этот код предоставлен AnkitRai01

C #

// C # реализация подхода

using System;

                      

class GFG 

{

  
// Функция для возврата номера
// положительные целые числа меньше или равны
// к N, которые имеют нечетное количество цифр

static int odd_digits(int n)

{

    if (n < 10)

        return n;

    else if (n / 10 < 10)

        return 9;

    else if (n / 100 < 10)

        return 9 + n - 99;

    else if (n / 1000 < 10)

        return 9 + 900;

    else if (n / 10000 < 10)

        return 909 + n - 9999;

    else

        return 90909;

}

  
// Код драйвера

public static void Main(String []args) 

{

    int n = 893;

  

    Console.WriteLine(odd_digits(n));

}
}

  
// Этот код предоставлен 29AjayKumar

Выход:

803

Рекомендуемые посты:

Найти число натуральных чисел, меньших или равных N, которые имеют нечетное число цифр

0.00 (0%) 0 votes