📌  相关文章
📜  查找从1到n的整数数,其中仅包含数字0和1

📅  最后修改于: 2021-04-23 21:39:09             🧑  作者: Mango

给定数字N。任务是找到从1到n的整数数,该整数仅包含数字0和1。

例子:

Input : N = 15
Output : 3
Explanation : 1, 10, 11 are such integers.

Input : N = 120
Output : 7
Explanation : 1, 10, 11, 100, 101, 110, 111 
are such integers.

方法:一种有效的方法是仅使用从数字1开始的递归函数来构建包含1和0的整数。对于每个数字,请检查其是否小于n

下面是上述方法的实现:

C++
// C++ program to find the number of integers
// from 1 to n which contains digits 0's and 1's only
 
#include 
using namespace std;
 
// Function to find the number of integers
// from 1 to n which contains 0's and 1's only
int countNumbers(int x, int n)
{
    // If number is greater than n
    if (x > n)
        return 0;
 
    // otherwise add count this number and
    // call two functions
    return 1 + countNumbers(x * 10, n) + countNumbers(x * 10 + 1, n);
}
 
// Driver code
int main()
{
    int n = 120;
 
    cout << countNumbers(1, n);
 
    return 0;
}


Java
// Java program to find the number of integers
// from 1 to n which contains digits 0's and 1's only
class GFG
{
     
// Function to find the number of integers
// from 1 to n which contains 0's and 1's only
static int countNumbers(int x, int n)
{
    // If number is greater than n
    if (x > n)
        return 0;
 
    // otherwise add count this number and
    // call two functions
    return 1 + countNumbers(x * 10, n) + countNumbers(x * 10 + 1, n);
}
 
// Driver code
public static void main (String[] args)
{
    int n = 120;
 
    System.out.println(countNumbers(1, n));
}
}
 
// This code is contributed by chandan_jnu


Python3
# Python3 program to find the number of
# integers from 1 to n which contains
# digits 0's and 1's only
 
# Function to find the number of integers
# from 1 to n which contains 0's and 1's only
def countNumbers(x, n):
     
    # If number is greater than n
    if x > n :
        return 0
 
    # otherwise add count this number and
    # call two functions
    return (1 + countNumbers(x * 10, n) +
                countNumbers(x * 10 + 1, n))
 
# Driver code
if __name__ == '__main__':
    n = 120;
 
    print(countNumbers(1, n));
     
# This code is contributed by Arnab Kundu


C#
// C# program to find the number of integers
// from 1 to n which contains digits 0's and 1's only
using System;
 
class GFG
{
 
// Function to find the number of integers
// from 1 to n which contains 0's and 1's only
static int countNumbers(int x, int n)
{
    // If number is greater than n
    if (x > n)
        return 0;
 
    // otherwise add count this number and
    // call two functions
    return 1 + countNumbers(x * 10, n) +
               countNumbers(x * 10 + 1, n);
}
 
// Driver code
public static void Main()
{
    int n = 120;
 
    Console.WriteLine(countNumbers(1, n));
}
}
 
// This code is contributed by Ryuga


PHP
 $n)
        return 0;
 
    // otherwise add count this number and
    // call two functions
    return 1 + countNumbers($x * 10, $n) +
               countNumbers($x * 10 + 1, $n);
}
 
// Driver code
$n = 120;
 
echo(countNumbers(1, $n));
 
// This code is contributed
// by Code_Mech.
?>


Javascript


输出:
7