给定数字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