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
广告
数据结构
网络
关系型数据库管理系统 (RDBMS)
操作系统
Java
iOS
HTML
CSS
Android
Python
C语言编程
C++
C#
MongoDB
MySQL
Javascript
PHP