酷代码 AI
菜单

c++城主在生日的时候,会在生日蛋糕上插上当时年龄数量的蜡烛数,现在城主刚过完150岁的生日,已经插了n根蜡烛,只有算出城主是从几岁开始有这个习惯的,才能够打开这扇门。下面请你帮助小核桃编程完成这个问题,算出城主究竟是几岁开始养成这个习惯的。 输入: 一个整数n,表示城主到现在为止总共插的蜡烛的数量。 输出: 一个整数,表示城主开始有这个习惯的年龄。 输入样例: 11172 输出样例: 18

```cpp #include <iostream> using namespace std; int main() { int n; cin >> n; // 遍历可能的起始年龄 for (int start = 1; start <= 150; start++) { int sum = 0; // 计算从起始年龄到150岁插蜡烛的总数 for (int i = start; i <= 150; i++) { sum += i; } // 如果总数等于输入的蜡烛数,输出起始年龄 if (sum == n) { cout << start; break; } } return 0; } ``` 代码解释: 1. 输入处理:使用`cin`读取输入的蜡烛总数`n`。 2. 遍历起始年龄:使用外层`for`循环遍历可能的起始年龄`start`,范围从1到150。 3. 计算蜡烛总数:对于每个起始年龄,使用内层`for`循环计算从该年龄到150岁插蜡烛的总数`sum`。 4. 判断并输出结果:如果计算得到的总数`sum`等于输入的蜡烛数`n`,则输出起始年龄`start`,并使用`break`语句跳出外层循环。 复杂度分析: - 时间复杂度:$O(m * k)$,其中$m$是可能的起始年龄的数量(这里是150),$k$是从起始年龄到150岁的年龄范围。 - 空间复杂度:$O(1)$,只使用了常数级的额外空间。 [2026-01-30 20:12:17 | AI问答 | 377点数解答]

服务商
相关提问
发财导航,免费问AI
实用工具查看更多