題目:給定乙個十進位制數m,以及需要轉換的進製數n。將十進位制數m轉化為n進製數題目其實還算簡單,但是自己還是陷入了思維誤區。。。。本來想休息一段時間再做,但還是感覺得堅持著做,做不出來的就看別人的解法整理一下思路,畢竟題目時間少。
進製轉換,乍一看還是比較簡單的,做的時候出現了兩個問題:
1. 沒有考慮符號;
2. 寫成了10進製轉2進製的**。。
首先整體的思路還是,先取模確定餘數 m%n,然後根據於餘數確定當前進製對應的數字,然後對 m/n,來進行下一位的運算,注意這裡應該後計算的加到最前面。
這裡以 23,12為例:1-1)23%12 餘數為 11,在12進製中 11 為 b;1-2)23/12 = 1,2-1)1%12 = 1,在 12 進製中 1 還是 1,2-1)1/12=0,結束,最終得到 1b 。
所以這裡用了乙個 index 索引字串來表示進製對應的數字,「0123456789abcdef」,將餘數和對應的位置匹配就能夠拿到對應進製的數字了。
最後需要注意的是,提前對 m 進行符號判斷,確認符號後取絕對值進行運算,最後的結果根據符決定是否在結果字串上加負號。
完整**如下。
public static string solve (int m, int n)
int flag = 1;
if(m<0)
string resstring = "";
string index = "0123456789abcdef";
m = math.abs(m);
while(m>0)
if(flag==-1)
return resstring;
}
牛客網刷題 進製轉換
給定乙個十進位制數m,以及需要轉換的進製數n。將十進位制數m轉化為n進製數 輸入描述 輸入乙個數字和轉換進製 輸出描述 轉換後的字串 輸入 7,2輸出 111 本題比較簡單,主要是考慮好字母的處理以及負數的處理。通過從後往前的方式,迴圈計算每一位數 public class solution int...
牛客題 進製轉換
給定乙個十進位制數m,以及需要轉換的進製數n。將十進位制數m轉化為n進製數 主要考慮負數情況和10進製以上怎麼轉換,進製轉換我們知道就是將m對n進行取餘,得到的結果就是低位的值,之後m m n 2進製用0,1表示 8進製由0 7表示 10進製是0 9表示,十六進製制由 0123456789abcde...
牛客題霸 進製轉換
進製轉換的方法較為經典。對於乙個十進位制的是數,每次對m取模,然後除以m m為轉換後的進製 即可得到m進製數。因為m進製的數第一位時m 0m 0 m0,第二位時m 1m 1 m1,第三位m2 m 2 cdots m2 所以如果10進製的數n大於m km k mk k是最大的,即n 1 nn 1 則說...