酷代码 AI
菜单
服务商

城主分蛋糕问题的 C++ 代码实现

以下是解决此问题的 C++ 代码: ```cpp #include <iostream> using namespace std; // 计算从 start 岁到 150 岁总共分出去的蛋糕数量 int calculateCakes(int start) { int total = 0; for (int i = start; i <= 150; i++) { total += (i - 1); // 每年分出去的蛋糕数量是年龄减 1 } return total; } int main() { int n; cin >> n; // 从 2 岁开始尝试,找到满足条件的起始年龄 for (int start = 2; start <= 150; start++) { if (calculateCakes(start) == n) { cout << start << endl; break; } } return 0; } ``` ### 代码解释: 1. **`calculateCakes` 函数**:该函数用于计算从 `start` 岁到 150 岁总共分出去的蛋糕数量。通过循环遍历从 `start` 到 150 的每个年龄,将每个年龄减 1 后累加到 `total` 中,最终返回 `total`。 2. **`main` 函数**:首先读取输入的 `n`,表示总共分出去的蛋糕数量。然后从 2 岁开始尝试,调用 `calculateCakes` 函数计算从当前年龄开始到 150 岁分出去的蛋糕数量。如果计算结果等于 `n`,则输出当前年龄并跳出循环。 ### 复杂度分析: - **时间复杂度**:$O(m)$,其中 $m$ 是可能的起始年龄的数量,这里 $m$ 最大为 149(从 2 岁到 150 岁)。 - **空间复杂度**:$O(1)$,只使用了常数级的额外空间。 ######[AI问答 | 465点数解答 | 2026-02-27 20:25:25]

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