順便說明一下真正的取餘過程。
十進位制轉二進位制:用十進位制數除以二進位制數,得到的每一位餘數就是二進位制數的構成,但是要倒序輸出才是正常的二進位制。
過程如下:
比如整數10
10%2 = 0; 10/2= 5;
5%2 = 1; 5/2 = 2;
2%2 = 0;
2/2 =1;注意上一步中因為餘數已經為0了,同時下一步中 1/2 = 0;所以除法到這裡結束。
前面都是取餘數,最後一位是商,如果商為0則為0,商為1則為1;
然後我們反過來輸出它,從下往上就是:1010;
比如整數7
7%2 = 1; 7/2 = 3;
3%2 = 1;
3/2 = 1;除法到這結束,因為下一步中 1/2=0了
1%2 = 0;
同樣反過來輸出,就是:0111;也可以直接111,把0省略
不管是轉二進位制還是轉八進位制或者是轉十六進製制,只要是誰轉誰,那就用誰除以誰,取餘數,直到為0,然後反向輸出即可!
下面是我注釋後的**。
#include
#include
using
namespace std;
intnumber
(int n)
int count =0;
for(i=
0;i)//二進位制中1的個數
return count;
}int
main()
cout
}
藍橋杯 試題 演算法訓練 二進位制數數
資源限制 時間限制 1.0s記憶體限制 256.0mb 問題描述 給定l,r。統計 l,r 區間內的所有數在二進位制下包含的 1 的個數之和。如5的二進位制為101,包含2個 1 輸入格式 第一行包含2個數l,r 輸出格式 乙個數s,表示 l,r 區間內的所有數在二進位制下包含的 1 的個數之和。樣...
藍橋杯 二進位制數數(位運算)
問題描述 給定l,r。統計 l,r 區間內的所有數在二進位制下包含的 1 的個數之和。如5的二進位制為101,包含2個 1 輸入格式 第一行包含2個數l,r 輸出格式 乙個數s,表示 l,r 區間內的所有數在二進位制下包含的 1 的個數之和。樣例輸入 2 3樣例輸出 3 bit intcnt one...
藍橋杯演算法訓練 二進位制數
資源限制 時間限制 1.0s 記憶體限制 256.0mb 問題描述 給定l,r。統計 l,r 區間內的所有數在二進位制下包含的 1 的個數之和。如5的二進位制為101,包含2個 1 輸入格式 第一行包含2個數l,r 輸出格式 乙個數s,表示 l,r 區間內的所有數在二進位制下包含的 1 的個數之和。...