UVA 10931、CPE 10461程式解題。
解題觀念:
這題要將數字轉為二進位後,去算總共出現了幾個1。
如果用C寫的話比較麻煩,感謝JAVA吧~因為函式庫實在太方便了!
將整數轉為二進位的函式:Integer.toBinaryString();
只要轉為二進位後,在去抓1出現幾次。
比較要注意的一點是,轉二進位資料型態會變成字串型態。
※輸出格式要注意唷!建議直接複製格式!
解題步驟:
題目說輸入為0時,則測資結束。所以要加個判斷式去判斷。
宣告一整數變數,在宣告一字串變數去存取轉為二進位後的字串。
宣告字元變數b去抓「1」;宣告整數變數c去累加「1」出現的次數。
設定判斷式判斷測資是否結束。
在用for迴圈去跑,去抓整個字串「1」出現幾次。
抓字元用:charAt() 就不多說囉!
※最後一步很重要!!一定要將c歸零!! 不然輸入下筆測資時c沒歸零就會繼續累加。
EX:
10
10轉為二進位 => 1010
進入for迴圈,字串第0個字元為1存入b,b=='1'符合,c=0+1=1。
字串第1的字元為0存入b,b=='1'不符合,c不做計算。c=1。
字串第2個字元為1存入b,b=='1'符合,c=1+1=2。
字串第3的字元為0存入b,b=='1'不符合,c不做計算。 c=2。
印出2。
其他測資以此類推。
By 小K
沒有留言:
張貼留言