Skip to content
Related Articles

Related Articles

Improve Article

Count numbers having 0 as a digit

  • Difficulty Level : Basic
  • Last Updated : 24 Mar, 2021

Count how many integers from 1 to N contains 0’s as a digit.
Examples: 

Input:  n = 9
Output: 0

Input: n = 107
Output: 17
The numbers having 0 are 10, 20,..90, 100, 101..107

Input: n = 155
Output: 24
The numbers having 0 are 10, 20,..90, 100, 101..110,
120, ..150.

The idea is to traverse all numbers from 1 to n. For every traversed number, traverse through its digits, if any digit is 0, increment count. Below is the implementation of the above idea :
 

C++




// C++ program to count numbers from 1 to n with
// 0 as a digit
#include<bits/stdc++.h>
using namespace std;
 
// Returns 1 if x has 0, else 0
int has0(int x)
{
    // Traverse through all digits of
    // x to check if it has 0.
    while (x)
    {
        // If current digit is 0, return true
        if (x % 10 == 0)
          return 1;
 
        x /= 10;
    }
 
    return 0;
}
 
// Returns count of numbers from 1 to n with 0 as digit
int getCount(int n)
{
    // Initialize count of numbers having 0 as digit
    int count = 0;
 
    // Traverse through all numbers and for every number
    // check if it has 0.
    for (int i=1; i<=n; i++)
        count += has0(i);
 
    return count;
}
 
// Driver program
int main()
{
    int n = 107;
    cout << "Count of numbers from 1" << " to "
         << n << " is " << getCount(n);
}

Java




// Java program to count numbers
// from 1 to n with 0 as a digit
import java.io.*;
 
class GFG {
     
    // Returns 1 if x has 0, else 0
    static int has0(int x)
    {
        // Traverse through all digits
        // of x to check if it has 0.
        while (x != 0)
        {
            // If current digit is 0,
            // return true
            if (x % 10 == 0)
            return 1;
     
            x /= 10;
        }
     
        return 0;
    }
     
    // Returns count of numbers
    // from 1 to n with 0 as digit
    static int getCount(int n)
    {
        // Initialize count of
        // numbers having 0 as digit
        int count = 0;
     
        // Traverse through all numbers
        // and for every number
        // check if it has 0.
        for (int i = 1; i <= n; i++)
            count += has0(i);
     
        return count;
    }
 
     
// Driver program
public static void main(String args[])
{
  int n = 107;
  System.out.println("Count of numbers from 1"
            + " to " +n + " is " + getCount(n));
}
}
 
// This code is contributed by Nikita Tiwari.

Python3




# Python3 program to count numbers
# from 1 to n with 0 as a digit
 
# Returns 1 if x has 0, else 0
def has0(x) :
     
    # Traverse through all digits
    # of x to check if it has 0.
    while (x != 0) :
         
        # If current digit is 0,
        # return true
        if (x % 10 == 0) :
            return 1
 
        x = x // 10
     
    return 0
 
 
# Returns count of numbers
# from 1 to n with 0 as digit
def getCount(n) :
     
    # Initialize count of numbers
    # having 0 as digit.
    count = 0
 
    # Traverse through all numbers
    # and for every number check
    # if it has 0.
    for i in range(1, n + 1) :
        count = count + has0(i)
 
    return count
 
 
# Driver program
n = 107
print("Count of numbers from 1", " to ",
                n , " is " , getCount(n))
 
 
# This code is contributed by Nikita tiwari.

C#




// C# program to count numbers
// from 1 to n with 0 as a digit
using System;
 
class GFG
{
     
    // Returns 1 if x has 0, else 0
    static int has0(int x)
    {
        // Traverse through all digits
        // of x to check if it has 0.
        while (x != 0)
        {
            // If current digit is 0,
            // return true
            if (x % 10 == 0)
            return 1;
     
            x /= 10;
        }
     
        return 0;
    }
     
    // Returns count of numbers
    // from 1 to n with 0 as digit
    static int getCount(int n)
    {
        // Initialize count of
        // numbers having 0 as digit
        int count = 0;
     
        // Traverse through all numbers
        // and for every number
        // check if it has 0.
        for (int i = 1; i <= n; i++)
            count += has0(i);
     
        return count;
    }
 
     
// Driver Code
public static void Main()
{
     
    int n = 107;
    Console.WriteLine("Count of numbers from 1"
                        + " to " +n + " is " + getCount(n));
}
}
 
// This code is contributed by Sam007

Javascript




<script>
 
// JavaScript program to count numbers from 1 to n with
// 0 as a digit
 
// Returns 1 if x has 0, else 0
function has0(x)
{
    // Traverse through all digits of
    // x to check if it has 0.
    while (x)
    {
        // If current digit is 0, return true
        if (x % 10 == 0)
        return 1;
 
        x = Math.floor(x / 10);
    }
 
    return 0;
}
 
// Returns count of numbers from 1 to n with 0 as digit
function getCount(n)
{
    // Initialize count of numbers having 0 as digit
    let count = 0;
 
    // Traverse through all numbers and for every number
    // check if it has 0.
    for (let i=1; i<=n; i++)
        count += has0(i);
 
    return count;
}
 
// Driver program
 
    let n = 107;
    document.write("Count of numbers from 1" + " to "
        + n + " is " + getCount(n));
 
 
// This code is contributed by Surbhi Tyagi.
 
</script>

Output:

Count of numbers from 1 to 107 is 17

Refer below post for an optimized solution.
Count numbers having 0 as a digit
This article is contributed by Dheeraj Gupta. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above
 

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.  To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.

In case you wish to attend live classes with experts, please refer DSA Live Classes for Working Professionals and Competitive Programming Live for Students.




My Personal Notes arrow_drop_up
Recommended Articles
Page :