酷代码 AI
菜单
服务商
DeepSeek字节豆包
更多选项

C++统计区间内3的倍数个数及求和

## 🔍 解题思路 题目要求统计区间 `[a, b]` 内所有能被 3 整除的数字个数,并计算它们的和。核心是遍历区间内每一个整数,判断 `i % 3 == 0`,满足则计数并累加。 ## 💻 C++ 代码实现 ```cpp #include <iostream> using namespace std; int main() { int a, b; cin >> a >> b; int count = 0; long long sum = 0; // 确保 a <= b if (a > b) { swap(a, b); } for (int i = a; i <= b; i++) { if (i % 3 == 0) { count++; sum += i; } } cout << count << endl; cout << sum << endl; return 0; } ``` ## ⚙️ 代码解析 **输入处理**:读取两个整数,若 `a > b` 则交换,保证区间方向正确。 **循环遍历**:从 `a` 到 `b` 逐个检查,`i % 3 == 0` 时计数并累加到 `sum`。 **数据类型**:`sum` 使用 `long long`,防止区间较大时整数溢出(例如 `a=-10^9, b=10^9`)。 **输出格式**:第一行输出个数,第二行输出总和。 ## 🧪 示例验证 输入:`1 10` 遍历 1~10,3的倍数有:3, 6, 9 输出: ``` 3 18 ``` 输入:`10 1` 自动交换为 1~10,结果同上。 ## ⏳ 复杂度分析 时间复杂度 O(b-a+1),空间复杂度 O(1)。若区间极大(如跨度10^9),可改用数学公式优化,但本题通常数据范围较小,直接遍历足够。 ######[AI问答 | 448点数解答 | 2026-08-09 12:23:37]

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