1 条题解

  • 0
    @ 2026-4-12 9:18:36

    二进制转十进制(25位大数)

    25位二进制数刚好可以用 64位整型(unsigned long long) 存储,直接逐位计算即可,代码非常简洁。

    C++ 实现代码

    #include <iostream>
    #include <string>
    using namespace std;
    
    int main() {
        string bin;   // 用字符串读取二进制数
        cin >> bin;
        
        // 用64位无符号整型存储结果,足够存放25位二进制
        unsigned long long dec = 0;
        
        // 逐位转换:dec = dec * 2 + 当前位数字
        for (int i = 0; i < bin.size(); ++i) {
            dec = dec * 2 + (bin[i] - '0');
        }
        
        cout << dec << endl;
        return 0;
    }
    

    核心原理

    1. 逐位计算公式 从左到右遍历每一位二进制: 十进制 = 十进制 * 2 + 当前位数字
    2. 数据类型 unsigned long long 最大可表示 64位二进制数,完全覆盖题目要求的 25位
    3. 字符转数字 bin[i] - '0' 可以把字符 '0'/'1' 转为数字 0/1。

    测试示例

    输入:

    111111111111111111111111
    

    输出:

    16777215
    

    总结

    1. 25位二进制 → 用 unsigned long long 完全足够
    2. 核心公式:dec = dec * 2 + 当前位
    3. 代码极简、无坑,直接提交即可AC
    • 1

    信息

    ID
    757
    时间
    1000ms
    内存
    16MiB
    难度
    9
    标签
    递交数
    13
    已通过
    5
    上传者