攜程校招程式設計題 bit count

2021-09-22 20:27:19 字數 990 閱讀 9286

輸入乙個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 ...