给定整数N作为输入。目的是找到小于N且以Binary形式表示的整数的计数。例如,如果输入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输出结果
小于N的二进制数字数为: 7
The Binary numbers less than 100 are : 1, 10, 11, 100, 101, 110, 111
以下程序中使用的方法如下-
在这种方法中,我们将使用整数向量vec。为此,我们将首先按下1。现在要生成下一个二进制数,我们将从vec中提取最后一个数字(温度)(最初为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<<"小于N的二进制数字数为: "<<Smaller_N(N); return 0; }输出结果
如果我们运行上面的代码,它将生成以下输出-
小于N的二进制数字数为: 8