2013年10月9日 星期三

[UVA]Parity

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




沒有留言:

張貼留言