题解
【入门】正整数N转换成一个二进制数
1 条题解
-
0
解题思路
十进制转二进制的方法:不断除以 2,把余数倒序排列。
比如 100:
- 100÷2=50 余 0
- 50÷2=25 余 0
- 25÷2=12 余 1
- 12÷2=6 余 0
- 6÷2=3 余 0
- 3÷2=1 余 1
- 1÷2=0 余 1
- 倒序得 1100100
注意 n=0 时要特殊处理,直接输出 0。
参考代码
#include <iostream> #include <string> using namespace std; int main() { int n; cin >> n; if (n == 0) { cout << 0 << endl; return 0; } string ans; while (n > 0) { ans = char('0' + n % 2) + ans; n /= 2; } cout << ans << endl; return 0; }复杂度分析
- 时间复杂度:O(log N)
- 空间复杂度:O(log N)
- 1