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.



My Personal Notes arrow_drop_up

Second year Department of Information Technology Jadavpur University

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.