P4040小核桃的疑惑:C++ 实现十进制与二进制运算
### 🍃思路分析 本题要求根据输入的十进制整数 `A` 和二进制整数 `B`,计算 `A - B` 的结果并以十进制形式输出。解题的关键在于将二进制数 `B` 转换为十进制数,然后进行减法运算。 ### 📋代码实现 ```cpp #include <iostream> #include <string> #include <cmath> // 将二进制字符串转换为十进制整数的函数 int binaryToDecimal(const std::string& binary) { int decimal = 0; int length = binary.length(); for (int i = 0; i < length; ++i) { if (binary[length - i - 1] == '1') { // 计算每一位对应的十进制值并累加 decimal += std::pow(2, i); } } return decimal; } int main() { int A; std::string B; // 读取十进制整数 A std::cin >> A; // 读取二进制字符串 B std::cin >> B; // 将二进制字符串 B 转换为十进制整数 int decimalB = binaryToDecimal(B); // 计算 A - B 的结果 int result = A - decimalB; // 输出结果 std::cout << result << std::endl; return 0; } ``` ### 🔍代码解释 1. **`binaryToDecimal` 函数**:该函数接受一个二进制字符串作为参数,通过遍历字符串的每一位,将其转换为对应的十进制值并累加,最终返回转换后的十进制整数。 2. **`main` 函数**:首先读取输入的十进制整数 `A` 和二进制字符串 `B`,然后调用 `binaryToDecimal` 函数将 `B` 转换为十进制整数 `decimalB`,最后计算 `A - decimalB` 的结果并输出。 ### 💡复杂度分析 - **时间复杂度**:$O(n)$,其中 $n$ 是二进制字符串的长度。主要时间开销在于遍历二进制字符串进行转换。 - **空间复杂度**:$O(1)$,只使用了常数级的额外空间。 ### 🚀开发建议 - **错误处理**:在实际应用中,可以添加输入验证,确保输入的十进制数 `A` 在 `1` 到 `999` 之间,二进制字符串只包含 `0` 和 `1`。 - **代码复用**:`binaryToDecimal` 函数可以封装为一个类的方法,方便在其他项目中复用。 - **性能优化**:对于大规模的二进制转换,可以考虑使用位运算来提高性能。 ######[AI写代码神器 | 626点数解答 | 2026-08-29 19:49:03]
- Python 实现球类:精准计算半径、表面积与体积,附输入验证与异常处理!(阿里通义 | 261点数解答 | 2024-11-28 21:19:39)571
- C++实现单门课程成绩管理系统:教师学生双身份操作全解析(GPT | 6361点数解答 | 2024-05-24 02:01:02)669
- C++ 实现超实用单门课程成绩管理系统,教师学生灵活使用! (GPT | 68点数解答 | 2024-05-24 10:17:09)421
- C++实现:功能完备的单门课程成绩管理系统(GPT | 4293点数解答 | 2024-05-24 10:20:03)462
- JS函数 change(n,x):轻松实现数字二进制与八进制转换及注意要点(百度文心 | 436点数解答 | 2025-04-09 22:19:11)195
- 51 单片机:定时器 0 实现 8 个 LED 循环点亮,附代码及优化建议(字节豆包 | 1193点数解答 | 2024-12-27 15:10:29)484
- C++ 实现:判断 N 个数在二进制、八进制、十进制、十六进制下的可能性(字节豆包 | 812点数解答 | 2026-01-02 19:28:20)107
- Python实现:判断数字在二进制、八进制、十进制、十六进制中的可能性(字节豆包 | 405点数解答 | 2026-01-02 19:43:33)110
- 巧用 Python:判断数字在二进制、八进制、十进制、十六进制中的可能性(字节豆包 | 251点数解答 | 2026-01-02 19:44:35)118
- 揭秘!十进制数到负进制数的转换程序及代码详解(DeepSeek | 490点数解答 | 2026-01-20 17:31:14)98
- C++ 实现工厂编号二进制位设置为 1 的程序(字节豆包 | 307点数解答 | 2026-02-28 20:46:41)62
- 工厂编号位运算:将指定位置置为 0 的 C++ 实现(字节豆包 | 339点数解答 | 2026-02-28 20:48:38)62