入門+ · 進位制轉換

十進位制轉二進位制

只用 % 2 和 / 2 把十進位制轉成二進位制。Fibonacci 之後最常見的面試熱身題。

題目

輸入:一個整數 n(0 ≤ n ≤ 10⁹)。

輸出:n 的二進位制表示,不帶前導零(0 列印為 0)。

樣例:

輸入輸出
5101
25511111111

你的解答

Program.cs — 你的解答
"用我的輸入試跑"的自定義輸入

判題完全在你的瀏覽器裡對隱藏測試執行。程式碼隨打隨存(本地)。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 那篇講了什麼時候要緊。下一題:數素數個數。