問題描述
給定l,r。統計[l,r]區間內的所有數在二進位制下包含的「1」的個數之和。
如5的二進位制為101,包含2個「1」。
輸入格式
第一行包含2個數l,r
輸出格式
乙個數s,表示[l,r]區間內的所有數在二進位制下包含的「1」的個數之和。
樣例輸入
2 3樣例輸出
3
//bit
intcnt_ones
(int n)
return cnt;
}
位運算解決問題的核心在於n &= (n-1);
,位運算過程本文不詳細**,參考鏈結
本人測試了位運算解法和暴力解法的時間花費,發現位運算的速度幾乎是暴力的4倍
完整**如下
#include
#include
#include
#include
#include
#include
#include
#include
using
namespace std;
#define ll long long
intcnt_ones
(int n)
return cnt;
}int
numone
(int n)
return k;
}int
main()
cout<<
clock()
-t<<
"ms "
<
t =clock()
; sum =0;
for(
int i=l;i<=r;i++
) cout<<
clock()
-t<<
"ms "
<
}
藍橋杯訓練題目 (二進位制數數)
順便說明一下真正的取餘過程。十進位制轉二進位制 用十進位制數除以二進位制數,得到的每一位餘數就是二進位制數的構成,但是要倒序輸出才是正常的二進位制。過程如下 比如整數10 10 2 0 10 2 5 5 2 1 5 2 2 2 2 0 2 2 1 注意上一步中因為餘數已經為0了,同時下一步中 1 2...
藍橋杯 試題 演算法訓練 二進位制數數
資源限制 時間限制 1.0s記憶體限制 256.0mb 問題描述 給定l,r。統計 l,r 區間內的所有數在二進位制下包含的 1 的個數之和。如5的二進位制為101,包含2個 1 輸入格式 第一行包含2個數l,r 輸出格式 乙個數s,表示 l,r 區間內的所有數在二進位制下包含的 1 的個數之和。樣...
( 藍橋杯 ALGO 202 二進位制數數)
2.重點知識 大概是最後一次參加藍橋杯,python組模擬題練習,僅作為個人總結,分享給有需要的人,如有錯誤,請糾正,萬分感謝!給定l,r。統計 l,r 區間內的所有數在二進位制下包含的 1 的個數之和。如5的二進位制為101,包含2個 1 第一行包含2個數l,r 乙個數s,表示 l,r 區間內的所...