這題如果要快一點的話,不必把進制轉換的值算出來,在數幾個1
你想想,21你轉2進制,你是不是可以想成 16+4+1
那直接建表不就好了,data[15]需要15個 data[0]=1 data[1]=2 data[2]=4.....
這樣你從最大data[15]開始判斷,假設if(M>data[x] )那M-=data[x] ,數這樣條件成立幾次即可
比如data[4] =16 example if(21 >=16 ){cnt_2+=1} => if(21-16)>=data[2]) {cnt_2+=1} => if(21-16-4)>=data[0] ){cnt_2+=1}