CPE 10403、UVA 10019程式解題。
解題觀念:
這題最主要是要考二進位制的使用。所以要懂得如何將十進位轉為二進位。
轉為二進位之後,要去計算總共有幾個1。
(例如:2=>10 總共有一個1。)
第一階段是將所輸入的值直接轉為2進位。
所以還是用老方法,因為轉為二進位後資料型態為字串,
就直接去抓字元判斷,是1就累加一次,最後再將累加結果印出。
第二階段比較麻煩,要將數字拆開,在去個別轉為二進位去判斷。
所以要用取10餘數的方式抓出每一個數字。
解題步驟:
(前面要自行設定測資個數就不多說囉~)
* COUNT 和 count 為不同變數;ans 和 ANS 為不同變數。
將使用者輸入的整數轉為二進位(Integer.toBinaryString() 語法),
進入for迴圈去抓字元,判對是否為1,符合就將count+1。
進入下一個迴圈,不設定終止條件(等等再下面再設定),變化量為a/10。
進入if判斷,如果取餘數不為0,就取出餘數,並轉為二進位,
然後再進入判斷式,判對是否為1,符合將COUNT+1。
如果取餘數為0,表示已到底,就跳出迴圈。
EX:
1 (一個測資)
265
265 =>100001001 => 進入迴圈一個一個判斷,總共有3個1 => count=3。
265 => 265%10=5 => 101 =>進入迴圈判斷,有2個1 => COUNT=2;
265/10=26 => 26%10=6 => 110 =>進入迴圈,有2個1 => COUNT=4;
26/10=2 => 2%10=2 => 10 =>進入迴圈,有1個1 => COUNT=5;
2/10=0 => 進入判斷式不符合,跳出迴圈。
印出。
BY 小K
沒有留言:
張貼留言