入門+ · 進位制轉換
十進位制轉二進位制
只用 % 2 和 / 2 把十進位制轉成二進位制。Fibonacci 之後最常見的面試熱身題。
題目
輸入:一個整數 n(0 ≤ n ≤ 10⁹)。
輸出:n 的二進位制表示,不帶前導零(0 列印為 0)。
樣例:
| 輸入 | 輸出 |
|---|---|
5 | 101 |
255 | 11111111 |
你的解答
"用我的輸入試跑"的自定義輸入
判題完全在你的瀏覽器裡對隱藏測試執行。程式碼隨打隨存(本地)。Ctrl+Enter 判題。
卡住了?提示
提示 1 —— 兩個運算
n % 2 是最後一位;n / 2 把它丟掉。把每一位收集起來再反轉,或者每次把新位拼到字串前面。
提示 2 —— 零的陷阱
while (n > 0) 對 n = 0 一輪都不進,你會什麼都不列印。先單獨處理 0(它列印為 0)。
解答(先自己試!)
int n = int.Parse(Console.ReadLine());
if (n == 0) { Console.WriteLine("0"); return; }
string bits = "";
while (n > 0) { bits = (n % 2) + bits; n = n / 2; }
Console.WriteLine(bits);
對超大輸入,不斷往字串前面拼是 O(n²)——string 與 StringBuilder 那篇講了什麼時候要緊。下一題:數素數個數。