計算乙個整數內「1」的個數 思考

2021-05-21 10:16:53 字數 435 閱讀 8683

看到乙個面試題,大體是:輸出從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...