HDU 4588 二進位制的加法進製統計

2021-07-15 18:13:52 字數 1022 閱讀 2003

題意:

給兩個數a b,問二進位制情況下從a一直加1 直到b需要進多少位。

輸入:

1 2

1 31 4

1 6

輸出:

023

6

分析:

二進位制只是由1和0組成,二進位制下的各數都有規律可循。

9 8 7 6 5 4 3 2 1

0 0 0 0 0 0 0 0 0 

(0)0 0 0 0 0 0 0 0 1 

(1)0 0 0 0 0 0 0 1 0 

(2)0 0 0 0 0 0 0 1 1 

(3)0 0 0 0 0 0 1 0 0 

(4)0 0 0 0 0 0 1 0 1 

(5)0 0 0 0 

0 0 1 1 0 

(6)0 0 0 0 0 0 1 1 1 

(7)0 0 0 0 0 1 0 0 0 

(8): : :::::::

: : : : : : : 

:就這樣會發現規律:

就是第一

豎行就是1和0交替出現,

第二豎行是00 11交替出

現,第三豎行是0000 1111交替

出現等等

計算1的個數,然後求需要進製的值....

拆成二進位制來看的話,考慮第一位,假設從1~b有x1個數的第一位是1,從1~a-1有x2個數的第一位是1,那麼從a~b就有(x1-x2)個數第一位是1,那麼在第一位需要進製的次數就為(x1-x2)/2。假設從a~b有x3個數第二位是1,那麼在第二位需要進製的次數就為((x1-x2)/2 + x3)/2。以此類推。

**:#include using namespace std ;

int main()

long long num=0;

for(int i=0; i<70; i++)

printf("%i64d\n",num);

}return 0;

}

二進位制加法運算

兩個二進位制整數相加時,是位對位處理的,從最低的一對位 右邊 開始,依序將每一對位進行加法運算。兩個二進位制數字相加,有四種結果,如下所示 0 0 0 0 1 1 1 0 1 1 1 10 1 與 1 相加的結果是二進位制的 10 等於十進位制的 2 多出來的數字向更高位產生乙個進製。如下圖所示,兩...

二進位制加法運算

兩個二進位制整數相加時,是位對位處理的,從最低的一對位 右邊 開始,依序將每一對位進行加法運算。兩個二進位制數字相加,有四種結果,如下所示 0 0 0 0 1 1 1 0 1 1 1 10 1 與 1 相加的結果是二進位制的 10 等於十進位制的 2 多出來的數字向更高位產生乙個進製。如下圖所示,兩...

操作二進位制寫入二進

操作二進位制 寫入二進位制 1 宣告變數 sqlite3 stmt stat 2 把sql語句解析到stat結構中去 sqlite3 prepare 3 繫結替換 sqlite3 bind blob 4 儲存到資料庫 int result sqlite3 step 5 釋放stat結構 sqlite...