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).

Similarily, 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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to count numbers with N digits
// which consists of odd number of 0's
#include <bits/stdc++.h>
using namespace std;
  
// Function to count Numbers with N digits
// which consists of odd number of 0's
int countNumbers(int N)
{
    return (pow(10, N) - pow(8, N)) / 2;
}
  
// Driver code
int main()
{
    int n = 5;
  
    cout << countNumbers(n) << endl;
  
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java program to count numbers 
// with N digits which consists 
// of odd number of 0's
import java.io.*;
  
class GFG 
{
  
// Function to count Numbers
// with N digits which consists
// of odd number of 0's
static int countNumbers(int N)
{
    return (int)(Math.pow(10, N) - 
                 Math.pow(8, N)) / 2;
}
  
// Driver code
public static void main (String[] args) 
{
    int n = 5;
    System.out.println(countNumbers(n));
}
}
  
// This code is contributed by Shashank

chevron_right


Python 3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python 3 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
def countNumbers( N):
  
    return (pow(10, N) - pow(8, N)) // 2
  
# Driver code
if __name__ == "__main__":
  
    n = 5
  
    print (countNumbers(n))
  
# This code is contributed 
# by ChitraNayal

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// C# program to count numbers 
// with N digits which consists 
// of odd number of 0's
using System;
  
class GFG 
{
  
// Function to count Numbers
// with N digits which consists
// of odd number of 0's
static int countNumbers(int N)
{
    return (int)(Math.Pow(10, N) - 
                 Math.Pow(8, N)) / 2;
}
  
// Driver code
public static void Main () 
{
    int n = 5;
    Console.WriteLine(countNumbers(n));
}
}
  
// This code is contributed
// by Akanksha Rai(Abby_akku)

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?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
?>

chevron_right


Output:

33616

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

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.




My Personal Notes arrow_drop_up

Recommended Posts:


Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.