27. Funny Encryption Method (CPE10403, UVA10019) - CPE一顆星解答與說明
CPE一顆星49題解答 - pdf 電子檔,售價 199 元,
購買電子檔可將筆記與完整解答帶著走,
坐車、上課時皆可隨時複習,
不受網路或廣告影響,
若有需要請來信購買 greens2314@gmail.com
題目
- 讀取一個數字,並輸出 b1 和 b2
輸入說明
- 第一行的數字 N 是宣告接下來有幾筆資料
- 每一行包含一個十進位數字的 M
輸出說明
- 輸出 N 行,每一行包含 b1 與 b2
- b1 與 b2 中間要以空白隔開
解題技巧
- 進制表示
- 265(10進制),十進制的數字 265
- 265(16進制) ,十六進制的數字 265
- 上述兩者都是 256 ,當使用不同的進制時,兩者並不相等
- 線上轉換 https://www.convertworld.com/zh-hant/numerals/hexadecimal.html
- 進制轉換
- 10 進制轉 2 進制
- 2 進制轉 10 進制
- 16 進制轉 10 進制
- 短除法
- 取商數,使用 /
- 取餘數,使用 %
解題過程
取得輸入
- 取得資料筆數,使用 nextInt()
- 根據資料筆數,使用 for 迴圈讀取資料
- 讀取數字 nextInt()
使用短除法,將10 進制數字轉 2 進制
- 紀錄 1 在二進制中出現的次數,宣告 count 變數
- 使用 while 迴圈
- 判斷被除數是否大於 0
- 將被除數除以 2 ,因為要轉成 2 進制
- 判斷餘數是否為 1 ,取餘數要使用 %
- 若為 1 ,則出現次數 count 要累加
- 將商數更新至被除數,取商數要使用 /
將 16 進制數字轉 2 進制 - 步驟 1
把 256(16進制) 轉成 10 進制
- 宣告 hexToDecimalNumber 變數,儲存轉10進制的結果
- 宣告 power 變數,紀錄次方數
- 使用 while 迴圈,取得數字中的每一位數字
- 每一位數字 = 數字除以 10 取餘數,使用 %
- 將每一位數字 乘上 16 (進制)所對應的次方數
- 使用 Math.pow( 數字, 次方 ) 方法
- 將計算結果累加到 hexToDecimalNumber 變數
- 更新被除數 = 數字除以 10 取商數,使用 /
- power 次方數每次累加1
將 10 進制數字轉 2 進制 - 步驟 2
- 重構此區的程式碼,根據題目需求,轉 2 進制會須要處理兩次,故宣告成方法,方便使用
- 10 進制轉 2 進制
- 16 進制轉 2 進制
- 宣告方法
- public static int getBinaryOneCount (int number) {}
- 公開 靜態 回傳值的型別 方法名稱 (宣告須傳入的參數) 大括號內寫程式碼
- 呼叫方法
- 直接 getBinaryOneCount(傳入變數)
- 回傳方法計算的結果
- return
留言
張貼留言