top1编程
← 返回题目
题解

【入门】正整数N转换成一个二进制数

1 条题解

  • 0
    @ 2026-7-31 4:59:36

    解题思路

    十进制转二进制的方法:不断除以 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