入门+ · 进制转换

十进制转二进制

只用 % 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 那篇讲了什么时候要紧。下一题:数素数个数。