酷代码 AI
菜单
服务商

不用函数实现求 1 到 n 范围内数字之和为 13 的整数个数

```cpp #include <iostream> int main() { int n; std::cin >> n; int count = 0; for (int i = 1; i <= n; i++) { int num = i; int sum = 0; while (num) { sum += num % 10; num /= 10; } if (sum == 13) { count++; } } std::cout << count; return 0; } ``` ### 代码解释 - **输入部分**:使用 `std::cin` 读取一个整数 `n`,这个 `n` 代表了要查找符合条件数字的范围上限。 - **遍历范围**:通过 `for` 循环,从 1 开始,逐个检查到 `n` 的每一个整数。 - **计算数字和**:对于每一个整数 `i`,将其赋值给 `num`。利用 `while` 循环,不断取出 `num` 的最后一位数字(通过 `num % 10`)并累加到 `sum` 中,然后将 `num` 除以 10 以去掉最后一位数字,直到 `num` 变为 0,此时就得到了该整数各位数字的和。 - **判断与计数**:当 `sum` 的值等于 13 时,说明该整数符合条件,将计数器 `count` 加 1。 - **输出结果**:最终输出 `count` 的值,也就是 1 到 `n` 范围内各位数字之和为 13 的整数的个数。 ### 复杂度分析 - **时间复杂度**:$O(n * log_{10}n)$。因为需要遍历 `n` 个整数,对于每个整数,计算其各位数字之和的时间复杂度为 $O(log_{10}n)$。 - **空间复杂度**:$O(1)$。只使用了常数级的额外变量,不随输入规模 `n` 的变化而变化。 ######[AI问答 | 493点数解答 | 2026-04-12 15:55:34]

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