2016 神殿(求二進位制1的個數最多的那個數)

2021-09-19 23:14:14 字數 925 閱讀 1292

icebound通過勤工儉學,攢了一小筆錢,於是他決定出國旅遊。這天,icebound走進了乙個神秘的神殿。神殿由八位守護者守衛,總共由6464個門組成,每一道門後都有乙個迷宮,迷宮的大小均為100 \times 100100×100。icebound在迷宮中總共耗時tt小時,消耗食物kk公斤。歷經千辛萬苦之後,icebound終於穿越了迷宮,到達了神殿的中心。神殿的中心有乙個寶箱。寶箱上顯示有兩個正整數ll和rr。icebound苦思冥想,終於發現一些開啟寶箱的線索。你需要找到乙個數pp,它具有乙個美妙的性質:它是[l,r][l,r]中所有數的二進位制表示裡,11的個數最多的乙個數。如果你發現了這個美妙的數字,你就可以開啟寶箱,獲得鉅額財富。

比如[4,8][4,8]中:

4: 0100

5: 0101

6: 0110

7: 0111

8: 1000

二進位制表示中11的個數最多的數是77,它含有33個11。

輸入:

輸入一行,兩個正整數:ll和rr,用空格隔開,代表神殿中寶箱上顯示的數。

1≤t<2^31 ,

1≤k≤10^5 ,

1≤l≤r≤2×10^9

輸出:
乙個十進位制數p,代表滿足條件的解。如果有多個p滿足條件,輸出最小的p。

樣例輸入
4 8

樣例輸出
**如下:

#include

using namespace std;

intmain()

printf

("%lld\n"

, l)

;return0;

}

求二進位制中1的個數

在 程式設計之美 一書中有一節提到如何求乙個位元組的無符號整型變數二進位制表示中中1的個數,主要提到了四種方法。下面簡單介紹一下 1.求餘法 在將十進位制數轉換為二進位制數時,採用除2取餘法。將每次除2得到的餘數儲存起來逆序輸出便是該十進位制整數的二進位制表示。因此可以採用這種方法去統計1的個數。i...

求二進位制中1的個數

解法有很多種 以乙個位元組無符號位元組變數作為例子 解法一 求餘法 在將十進位制數轉換為二進位制數時,採用除2取餘法。將每次除2得到的餘數儲存起來逆序輸出便是該十進位制整數的二進位制表示。因此可以採用這種方法去統計1的個數。public int count byte n return sum 解法二...

求二進位制中1的個數

這是乙個經常會在筆試和面試中遇到的題目,今天我做到了這個題目,就來分享一下我對這個題目的解決思路。首先拿到這個題目,我們的基本思路是 先判斷最後一位是否為1,接著把數字依次右移,判斷每一位是否為1,直到整數變為0為止。基於這個思路我們可以寫下如下的 int count int n n n 1 ret...