Contar números que tienen 0 como dígito

Cuente cuántos enteros del 1 al N contienen 0 como dígito.
Ejemplos: 

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.

La idea es recorrer todos los números del 1 al n. Para cada número atravesado, recorra sus dígitos, si algún dígito es 0, incremente la cuenta. A continuación se muestra la implementación de la idea anterior:
 

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>

Producción:

Count of numbers from 1 to 107 is 17

Consulte la publicación a continuación para obtener una solución optimizada.
Contar números que tienen 0 como dígito
Este artículo es una contribución de Dheeraj Gupta. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.
 

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *