酷代码 AI
菜单
服务商

C++ 实现跳过含 4 或 4 的倍数的数字计数

以下是解决这个问题的 C++ 代码: ```cpp #include <iostream> // 检查数字是否包含 4 bool containsFour(int num) { while (num > 0) { if (num % 10 == 4) { return true; } num /= 10; } return false; } int main() { int n; std::cin >> n; // 遍历从 1 到 n 的所有数字 for (int i = 1; i <= n; ++i) { // 检查是否是 4 的倍数或者包含 4 if (i % 4 != 0 && !containsFour(i)) { std::cout << i; if (i < n) { std::cout << " "; } } } std::cout << std::endl; return 0; } ``` ### 代码解释 1. **`containsFour` 函数**:该函数用于检查一个数字是否包含数字 4。通过不断取模和整除操作,逐位检查数字的每一位是否为 4。 2. **`main` 函数**: - 首先读取输入的数字 `n`。 - 然后使用 `for` 循环遍历从 1 到 `n` 的所有数字。 - 对于每个数字,检查它是否是 4 的倍数或者包含 4。如果不是,则输出该数字,并在数字之间添加空格。 ### 复杂度分析 - **时间复杂度**:$O(n log_{10} n)$,其中 $n$ 是输入的数字。对于每个数字,需要 $O(log_{10} n)$ 的时间来检查是否包含 4。 - **空间复杂度**:$O(1)$,只使用了常数级的额外空间。 ######[AI问答 | 455点数解答 | 2026-03-04 13:58:27]

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