題目描述
現在夯夯和朱朱餓了,他們想去吃點東西,他們發現店裡東西的**都是2的次方倍(20, 21,22…)現在夯夯和朱朱想把他們的的錢全都用掉。想知道他們最少能吃多少東西,最多能吃多少東西?
輸入格式
多組樣例,每組樣例佔一行,每行乙個整數,代表他們擁有的總錢數。
輸出格式
分別回答他們的問題,答案用空格隔開。
輸入 #121
輸出 #1
1 21 1
說明/提示
樣例數量 ≤ 104 總錢數 ≤ 1018
前乙個答案就是求二進位制位運算中『1』的個數,以下列舉兩種方法。
判斷二進位制數最右位置的數(temp>>=1 :二進位制數向右移動一位),若為1則count++;
int count, temp, n;
while(~
(scanf
("%lld"
,&n)))
}
運用位運算x & (x-1),優點:直接定位二進位制1的位置,跳過之間的0,比方法一速度更快!
int temp, count, n;
while(~
(scanf
("%lld"
,&n)))
位運算 二進位制中1的個數12
位運算 是把數字用二進位制表示之後,對每一次是0或1的運算。乘除效率低,實際程式設計中盡可能的用移位運算代替乘除法。世界上有10中人,一種人知道二進位制,而另一種人不知道二進位制 五種位運算 與 或 異或 左移和右移,分別對應 異或 相同為0,相異為1。左移運算子m左移n,表示把m左移n位,最左邊的...
位運算之二進位制中1的個數
位運算是把數字用二進位制表示之後,對每一位上0或1的運算。位運算有五種運算 與 或 異或 左移 右移。例如 10001010 3 01010000 如果數字是乙個無符號數值,則用0填補最左邊的 n 位 如果數字是乙個有符號數值,則用數字的符號位填補最左邊的 n 位。例如 00001011 2 000...
模板 位運算 二進位制中1的個數
給定乙個長度為n的數列,請你求出數列中每個數的二進位制表示中1的個數。輸入格式 第一行包含整數n。第二行包含n個整數,表示整個數列。輸出格式 共一行,包含n個整數,其中的第 i 個數表示數列中的第 i 個數的二進位制表示中1的個數。資料範圍 1 n 100000,0 數列中元素的值 109 輸入樣例...