1 条题解
-
0
【例72.1】 二进制转化为十进制
解题思路
从左到右读二进制位,前缀值每次乘2再加新位,最后转为十进制输出。
正确性说明
依题目给出的对应关系逐项处理,位置与原输入保持明确对应。每一步完成当前项的全部贡献,结束后得到所有位置或字符的目标结果。
易错点
长度n单独读取,不能把它当第一位。
复杂度
时间O(L),空间O(L)。
参考代码(C++11)
#include <bits/stdc++.h> using namespace std; int main() { ios::sync_with_stdio(false); cin.tie(nullptr); int n; string s; cin >> n >> s; long long value = 0; for (char c : s) value = value * 2 + c - '0'; cout << value << "\n"; return 0; }
- 1