C++小于N的二进制数计数
给定一个整数N作为输入。目标是找到小于N且以二进制形式表示的整数的个数。例如,如果输入N为12,则小于12的数为1, 10, 11,它们是二进制数,包含0和1作为数字。答案将是3。
例如
输入
N=100
输出
Count of Binary Digit numbers smaller than N are − 4
解释
The Binary numbers less than 100 are − 1, 10, 11, 100
输入
N=120
输出
Count of Binary Digit numbers smaller than N are: 7
解释
The Binary numbers less than 100 are : 1, 10, 11, 100, 101, 110, 111
下面程序中使用的方案如下 −
在这个方法中,我们将使用一个整数向量vec。首先我们将1压入其中。现在要生成下一个二进制数,我们将从vec中提取最后一个数字(temp)(最初为1)。然后使用以下方法生成下一个:temp*10和temp*10+1,因为二进制数将始终为(1, 10, 11, 100, 110, 111……)。从vec中弹出数字,如果它小于N,则递增计数。
输入一个整数N。
函数Smaller_N(int N)接收N并返回小于N的二进制数字的个数。
将初始计数设置为0。
取整数向量vec用于存储仅包含0和1的整数。
使用vec.push_back(1)将1添加到向量中。
使用while循环遍历vec[ ],取出最后压入的元素作为temp= vec.back()。并将其从vec中移除。
如果temp<=N,则递增计数并生成下一个二进制整数temp*10和temp*10+1,并将其添加到vec中。
在while循环结束时,返回计数作为结果。
示例
#include <bits/stdc++.h> using namespace std; int Smaller_N(int N){ int count = 0; vector<int> vec; vec.push_back(1); while (!vec.empty()){ int temp = vec.back(); vec.pop_back(); if (temp <= N){ count++; int temp_2 = temp * 10; vec.push_back(temp_2); vec.push_back(temp_2 + 1); } } return count; } int main(){ int N = 1000; cout<<"Count of Binary Digit numbers smaller than N are: "<<Smaller_N(N); return 0; }
输出
如果我们运行上面的代码,它将生成以下输出:
Count of Binary Digit numbers smaller than N are: 8
广告