1 条题解
-
0
八进制转二进制(100位超大数)
这道题的核心规则:八进制1位 = 二进制3位,直接逐位转换即可,100位大数用字符串处理。
C++ 实现代码
#include <iostream> #include <string> using namespace std; int main() { // 八进制每一位对应的3位二进制表 string oct2bin[] = { "000", "001", "010", "011", "100", "101", "110", "111" }; string oct; cin >> oct; string bin; // 存储最终二进制结果 // 遍历每一位八进制数,转成3位二进制 for (int i = 0; i < oct.size(); ++i) { int num = oct[i] - '0'; bin += oct2bin[num]; } // 去掉前导0(至少保留1位) int pos = 0; while (pos < bin.size() && bin[pos] == '0') { pos++; } if (pos == bin.size()) { // 全0的情况,输出0 cout << "0" << endl; } else { cout << bin.substr(pos) << endl; } return 0; }核心原理
- 固定转换规则
- 0 → 000
- 1 → 001
- 2 → 010
- 3 → 011
- 4 → 100
- 5 → 101
- 6 → 110
- 7 → 111
- 处理流程
- 读取字符串形式的八进制数
- 逐位替换为3位二进制
- 去掉前导0后输出
- 大数支持 全程用字符串处理,完美支持100位超长数据。
测试示例
输入:
12376532347173217361输出:
1010011111110101011010011100111001111011010001111011110001总结
- 八进制转二进制:1位八进制 = 固定3位二进制
- 100位大数必须用字符串处理
- 最后去掉前导0,保证输出格式正确
- 固定转换规则
- 1
信息
- ID
- 835
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 10
- 标签
- 递交数
- 1
- 已通过
- 1
- 上传者
粤公网安备44195502000195号