1 条题解

  • 0
    @ 2026-4-12 9:19:57

    十六进制转二进制(100位大数)

    这道题的核心规则:1位十六进制 = 固定4位二进制,直接逐位替换即可,100位大数用字符串处理。

    C++ 实现代码

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main() {
        // 十六进制 0~F 对应的 4位二进制
        string hex_to_bin[] = {
            "0000", "0001", "0010", "0011",
            "0100", "0101", "0110", "0111",
            "1000", "1001", "1010", "1011",
            "1100", "1101", "1110", "1111"
        };
    
        string hex;
        cin >> hex;
        string bin; // 存储最终二进制结果
    
        // 遍历每一位十六进制数
        for (int i = 0; i < hex.size(); i++) {
            char c = hex[i];
            int num;
    
            // 数字 0-9
            if (c >= '0' && c <= '9') {
                num = c - '0';
            }
            // 大写字母 A-F
            else {
                num = 10 + (c - 'A');
            }
    
            // 拼接对应的4位二进制
            bin += hex_to_bin[num];
        }
    
        // 去掉前导 0(至少保留1位)
        int pos = 0;
        while (pos < bin.size() && bin[pos] == '0') {
            pos++;
        }
        if (pos == bin.size()) {
            cout << "0" << endl;
        } else {
            cout << bin.substr(pos) << endl;
        }
    
        return 0;
    }
    

    核心原理

    1. 固定转换表 每一位十六进制数,直接对应4位二进制,无需计算:
      • 0→0000 1→0001 ... F→1111
    2. 大数处理 输入是100位超长数据,全程用字符串处理,无溢出风险
    3. 格式处理 最后去掉前导0,保证输出格式正确

    测试示例

    输入:

    123456789ABCDEF
    

    输出:

    100100011010001010110011110001001101010111100110111101111
    

    总结

    1. 十六进制转二进制:1位 = 固定4位
    2. 100位大数必须用字符串处理
    3. 代码简洁高效,直接提交即可满分
    • 1

    信息

    ID
    776
    时间
    1000ms
    内存
    16MiB
    难度
    10
    标签
    递交数
    1
    已通过
    1
    上传者