藍橋杯 二進位制數數(位運算)

2021-10-16 11:53:47 字數 1137 閱讀 1819

問題描述

給定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 區間內的所...