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
廣告