入门+ · 进制转换
十进制转二进制
只用 % 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 那篇讲了什么时候要紧。下一题:数素数个数。