看到乙個面試題,大體是:輸出從1到任意乙個數(正整數),然後統計「1」的個數,如「11」有2個「1」.
我就寫了下面這段,思路很簡單:先把全部數轉化為字串,然後輸出,最後統計字串中「1」的個數
計算過後,我發現以下有趣事情:
10以內(不包括10)有1個(這個不用跑程式,呵呵)
10 --> 1
100 --> 20
1000 --> 300
10000 --> 4000
100000--> 50000
哦,是很有規律的: 依次遞增10%
再回頭一想:這個問題僅用腦袋思考也能思考清楚:100比10增加10%的原因是 以十位數為1時多增加了10個,依次類推~
寫到這裡,我突然想起string.charat()方法,呵呵修改一下遍歷「1」那段,程式如下:
計算乙個數中1的個數 0的個數
1.求乙個int數二進位制中1的個數 1 與1 右移 正數 負數都可以 計算的是負數補碼中1的個數 inta cin a int count 0 int n sizeof int 8 位數for int i 0 i a 1 右移一位 cout 2 右移相當於除以2 判斷最低位可用2取餘 右移可用除以...
計算乙個整數二進位制中1的個數
這是來自牛客網關於乙個二進位制的運算 我的思路為每次和1 2 4 進行按位與運算就可得到二進位制中1的個數 如下 1 2 new coder ponint to offer 11 3 find bit 1 num of a nunber 4 56 include 7 include 8 9int f...
計算乙個整數二進位制中1的個數
這是來自牛客網關於乙個二進位制的運算 我的思路為每次和1 2 4 進行按位與運算就可得到二進位制中1的個數 如下 1 2 new coder ponint to offer 11 3 find bit 1 num of a nunber 4 56 include 7 include 8 9int f...