C ++中小于N的二进制数字计数

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

猜你喜欢