今晚翻出了之前收藏的乙個有趣的問題--一千個蘋果的分裝:
現在有1000個蘋果,和10個箱子,如何把這1000個蘋果裝在這10個箱子裡,才能使不管任何數量(1-1000)的蘋果,都能一次給出?
典型的二進位制數變種,1000個蘋果,最接近1024,轉化為2進製,需要占用10個bit,則從右往左數,第乙個bit位表示1個蘋果,第二個bit位表示2個蘋果,第三個bit位表示4個蘋果,,,第10個bit位表示488個蘋果(512-24)。分別把這些通過放入相同編號的箱子裡。當需要某一數量的蘋果時,檢視這些數量的哪些bit位為1,為1則表示這個bit位代表有蘋果,取出對應編號的箱子即可。
還有其他博友那淘來的毒藥問題,異曲同工:
有8瓶液體,其中一瓶是毒藥,毒性可使小白鼠飲用後在20小時內陣亡,需要幾隻小白鼠才能在20小時內判斷哪一瓶是毒藥?
分析:給8瓶毒藥編碼:
第一瓶:000
第二瓶:001
第三瓶:010
第四瓶:011
第五瓶:100
第六平:101
第七平:110
第八平:111
只需3只小老鼠
第一只老鼠喝最後bit位為1的,即第2,4,6,8瓶
第二隻老鼠喝中間bit位為1的,即第3,4,7,8瓶
第三隻老鼠喝第一bit位為1的,即第5,6,7,8瓶
如果20小時候,沒有老鼠死亡,則第一瓶有毒,否則:
假設第二隻和第三隻老鼠死亡,把對應位上bit設為1,即110,所以第7瓶有毒。
二進位制問題
題目 題解 純二進位制題目。因為所有的水都是由兩份相同的水合併而成的,因此每瓶水的體積一定是2 i,i in n 2 i i n 公升。最後保留k個瓶子,那麼最後總的公升數的二進位制表示中,1的個數一定 k。本題實質上是用不超過k個1和無數個0生成乙個最接近且大於n的二進位制數 方法一 includ...
二進位制有關問題
有1000瓶液體,味,外表完全 樣,其中 瓶是毒藥,有10 條警 警 喝過毒藥後兩 時後死亡。問,如何在兩個 時後確定 哪瓶是毒藥 解法 因為有1000瓶液體。10條警犬。分別給這1000瓶液體編號,為 1 10000 用二進位制表示 10位就夠了。因為2 10 1024 給這10只警犬分別編號 1...
LeetCode 二進位制問題
338.counting bits 計算小於n的各個數值對應的二進位制1的個數 思路 通過奇偶判斷,if i是偶數,a i a i 2 if i是奇數,a i a i 1 1。class solution return res 136.single number 只有乙個元素出現1次,其他出現2次,...