1 条题解
-
0
十六进制转二进制(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; }核心原理
- 固定转换表
每一位十六进制数,直接对应4位二进制,无需计算:
- 0→0000 1→0001 ... F→1111
- 大数处理 输入是100位超长数据,全程用字符串处理,无溢出风险
- 格式处理 最后去掉前导0,保证输出格式正确
测试示例
输入:
123456789ABCDEF输出:
100100011010001010110011110001001101010111100110111101111总结
- 十六进制转二进制:1位 = 固定4位
- 100位大数必须用字符串处理
- 代码简洁高效,直接提交即可满分
- 固定转换表
每一位十六进制数,直接对应4位二进制,无需计算:
- 1
信息
- ID
- 776
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者
粤公网安备44195502000195号