1 条题解
-
0
二进制转十进制(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; }核心原理
- 逐位计算公式
从左到右遍历每一位二进制:
十进制 = 十进制 * 2 + 当前位数字 - 数据类型
unsigned long long最大可表示 64位二进制数,完全覆盖题目要求的 25位。 - 字符转数字
bin[i] - '0'可以把字符'0'/'1'转为数字 0/1。
测试示例
输入:
111111111111111111111111输出:
16777215总结
- 25位二进制 → 用
unsigned long long完全足够 - 核心公式:dec = dec * 2 + 当前位
- 代码极简、无坑,直接提交即可AC
- 逐位计算公式
从左到右遍历每一位二进制:
- 1
信息
- ID
- 757
- 时间
- 1000ms
- 内存
- 16MiB
- 难度
- 9
- 标签
- 递交数
- 13
- 已通过
- 5
- 上传者
粤公网安备44195502000195号