酷代码 AI
菜单

c++城主在生日的时候,会把自己的生日蛋糕分给城里的小朋友。每年会把蛋糕分成当时年龄的数量,因为城主也喜欢吃蛋糕,所以他每年都会给自己留一块,把剩下的分出去。现在城主刚过完150岁的生日,已经分出去了n块蛋糕。 请你编写程序计算一下城主是是从几岁开始养成这个习惯的。(数据保证 n 一定有解,且最值答案大于1) 输入: 输入包括一行,包含一个整数n,表示城主到现在为止总共分出的蛋糕的数量。 输出: 输出包括一行,包含一个整数,表示城主开始有这个习惯的年龄。

以下是解决该问题的C++代码: ```cpp #include <iostream> using namespace std; // 主函数 int main() { int n; // 读取输入的总共分出的蛋糕数量 cin >> n; // 从2岁开始遍历可能的开始年龄 for (int startAge = 2; startAge < 150; startAge++) { int totalGiven = 0; // 计算从开始年龄到150岁分出的蛋糕总数 for (int age = startAge; age <= 150; age++) { totalGiven += age - 1; } // 如果分出的蛋糕总数等于输入的n,则输出开始年龄 if (totalGiven == n) { cout << startAge << endl; break; } } return 0; } ``` 代码解释: 1. 输入读取:使用`cin`读取输入的整数`n`,表示城主到现在为止总共分出的蛋糕的数量。 2. 遍历开始年龄:使用外层`for`循环从2岁开始遍历可能的开始年龄,直到149岁。 3. 计算分出的蛋糕总数:对于每个可能的开始年龄,使用内层`for`循环计算从该年龄到150岁分出的蛋糕总数。每年分出的蛋糕数量为年龄减1。 4. 判断并输出结果:如果计算出的分出的蛋糕总数等于输入的`n`,则输出该开始年龄,并使用`break`语句跳出外层循环。 复杂度分析: - 时间复杂度:$O(m^2)$,其中$m$是城主的最大年龄(这里是150)。因为有两层嵌套的`for`循环。 - 空间复杂度:$O(1)$,只使用了常数级的额外空间。 [2026-01-30 20:13:38 | AI问答 | 432点数解答]

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