Horje
Count Numbers with N digits which consists of odd number of 0's

We are given a number N. The task is to find the count of numbers which have N digits and odd number of zeroes. 

Note: The number can have preceding 0’s.

Examples

Input : N = 2
Output : Count = 18

Input : N = 3
Output : Count = 244

Suppose a number with N digits which contains only single zero. So the digits in the number as zero can be filled in only 1 way and the rest of each of the positions can be filled in 9 different ways with numbers from 1 to 9. So count of all such numbers with N digits and only 1 zero = NC1*(9N-1).

Similarly, count of all such numbers with N digits and 3 zeroes = NC3*(9N-3).
and so on.

So, count of all such numbers with N digits and odd number of zeroes will be, 

NC1*(9N-1) + NC3*(9N-3) + NC5*(9N-5) +…….+ NCK*(9N-K)
Where, K is an odd number less than N. 

The above equation can be written as, 

(9N)((NC1 * (1/9)) + (NC3 * (1/9^3)) + (NC5 * (1/9^5)) +… 
 

The above equation can be represented as subtraction of two series, (9N)*{(1+x)N-(1-x)N}/2, where x = 1/9
Which is equal to, 

(10N - 8N)/2

Below is the implementation of the above approach: 

C++

<?php
// PHP program to count numbers
// with N digits which consists
// of odd number of 0's
 
// Function to count Numbers
// with N digits which consists
// of odd number of 0's
function countNumbers($N)
{
    return (pow(10, $N) -
            pow(8, $N)) / 2;
}
 
// Driver code
$n = 5;
 
echo countNumbers($n) ;
 
// This code is contributed
// by Shivi_Aggarwal
?>

Javascript

<script>
    // Javascript program to count numbers with N digits
    // which consists of odd number of 0's
     
    // Function to count Numbers with N digits
    // which consists of odd number of 0's
    function countNumbers(N)
    {
        return parseInt((Math.pow(10, N) - Math.pow(8, N)) / 2, 10);
    }
     
    let n = 5;
    document.write(countNumbers(n));
     
    // This code is contributed by divyeshrabadiya07.
     
</script>

Output

33616

Note: Answer can be very large, so for N greater than 9, use modular exponentiation.

Time Complexity: O(log n)

Auxiliary Space: O(1), since no extra space has been taken.




Reffered: https://www.geeksforgeeks.org


C++ Programs

Related
Program for n-th even number Program for n-th even number
Program to find the Radius of the incircle of the triangle Program to find the Radius of the incircle of the triangle
C++ Program to Make a Simple Calculator C++ Program to Make a Simple Calculator
Difference between continue and break statements in C++ Difference between continue and break statements in C++
upper_bound and lower_bound for non increasing vector in c++ upper_bound and lower_bound for non increasing vector in c++

Type:
Geek
Category:
Coding
Sub Category:
Tutorial
Uploaded by:
Admin
Views:
7