輸入乙個long型別的數值, 求該數值的二進位制表示中的1的個數 .
輸入描述:
long 型別的數值
輸出描述:
該數值二進位制表示中1的個數
輸入例子1:
3
輸出例子1:
2
例子說明1:
3的二進位制表示: 11, 所以1個數為2
輸入例子2:
65
輸出例子2:
2
例子說明2:
65的二進位制為:1000001,所以1的個數為:2
對於負數,符號位是1,直接移位會引起死迴圈,另外也不能簡單的加乙個負號,因為負數是用補碼儲存的,這裡有兩種解決方案,一種是移動標誌位flag
#include using namespace std;
int main()
cout《還有一種是將負數強轉為無符號型別,但是這樣有時會超時?
#include using namespace std;
int main()
cout << res << endl;
}
最優解法, 可以證明每次n = n & (n-1)操作可以將從左到右最後是1的元素變為0, 所以這樣沒有無效的移位,速度是最快的。
public class solution
return count;
}}
網易校招程式設計題
define crt secure no warnings 1 include include include includeusing namespace std 小易準備去魔法王國採購魔法神器,購買魔法神器需要使用魔法幣,但是小易現在一枚魔法幣都沒有,但是小易有兩台魔法機器可以通過投入x x可以...
攜程2021春招筆試
就2道演算法題 因為第二題不會,要用ac自動機,沒寫過就放棄了。第一題 為了尋找最佳拍檔,我們定義兩人名字的緣分值 兩人名字左對齊後,對應位置字的拼音的緣分值之和。對於兩個拼音s1 s2,通過剔除一些字元使得留下的子串一模一樣,被剔除字元之和的最小值即為兩個拼音的緣分值。求給定兩人名字的緣分值。提交...
2016校招程式設計題《三》
給定乙個字串.問是否可以通過新增乙個字元將其變成回文串。輸入 一行由小寫字母構成的字串,長度不超過10。輸出 yes 或者no 輸入樣例 testest 輸出樣例 yes include include using namespace std bool fun string str if high ...