2013年8月1日 星期四

[UVA]Funny Encryption Method


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



沒有留言:

張貼留言