酷代码 AI
菜单
服务商

不用函数计算1到n之间回文数个数的C++实现

```cpp #include <iostream> int main() { int n; std::cin >> n; int count = 0; for (int i = 1; i <= n; i++) { int original = i; int reversed = 0; int temp = i; while (temp > 0) { int digit = temp % 10; reversed = reversed * 10 + digit; temp /= 10; } if (original == reversed) { count++; } } std::cout << count; return 0; } ``` ### 代码解释 1. **输入**:使用 `std::cin` 从标准输入读取一个整数 `n`,该整数表示我们要检查的范围上限。 2. **遍历范围**:通过 `for` 循环,从 1 开始逐个检查到 `n` 的每一个整数。 3. **反转数字**:对于每一个整数 `i`,将其赋值给 `original` 保存原始值,同时将其赋值给 `temp` 用于反转操作。在 `while` 循环中,不断取出 `temp` 的最后一位数字(通过 `temp % 10`),并将其添加到 `reversed` 中,同时将 `temp` 除以 10 去掉最后一位数字,直到 `temp` 变为 0,这样就完成了数字的反转。 4. **判断回文数**:比较 `original` 和 `reversed` 是否相等,如果相等,则说明该数是回文数,将计数器 `count` 加 1。 5. **输出结果**:最后使用 `std::cout` 输出 `count` 的值,即 1 到 `n` 范围内回文数的个数。 ### 复杂度分析 - **时间复杂度**:$O(n * log_{10}n)$。因为需要遍历 `n` 个整数,对于每个整数,反转操作的时间复杂度为 $O(log_{10}n)$。 - **空间复杂度**:$O(1)$。只使用了常数级的额外变量,不随输入规模 `n` 的变化而变化。 ######[AI问答 | 528点数解答 | 2026-04-12 16:11:06]

相关提问
本站限时免费提问中
实用工具查看更多
Linux在线手册 [开发类]
Jquery在线手册 [开发类]
今日油价 [生活类]
图片互转base64 [开发类]
时间转换器 [开发类]