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

城主分蛋糕起始年龄计算

这是一个数学推导加遍历的问题。题目意思是: - 城主从某个年龄 `startAge` 开始,每年生日会分出 `(当前年龄-1)` 块蛋糕(因为给自己留一块)。 - 一直到 150 岁,累积分出的蛋糕总数量等于输入值 n。 我们需要根据 n 反推起始年龄。 🔍 **解题思路** 设起始年龄为 `x`,则从 x 岁到 150 岁每年分出的蛋糕数分别为: ``` x-1, x, x+1, ..., 149 ``` 这是一个等差数列,项数 = `150 - x + 1 = 151 - x` 首项 = `x-1`,末项 = `149` 求和公式: ``` sum = (首项 + 末项) * 项数 / 2 = (x-1 + 149) * (151 - x) / 2 = (x + 148) * (151 - x) / 2 ``` 所以题目变成: 寻找 `x` ∈ [2, 150] 使得: ``` (x + 148) * (151 - x) / 2 == n ``` 直接枚举即可。 🧠 **程序实现** ```cpp #include <iostream> using namespace std; int main() { int n; cin >> n; // 从 2 到 150 枚举起始年龄 for (int x = 2; x <= 150; ++x) { // 从 x 岁到 150 岁分出的蛋糕总数 int sum = (x + 148) * (151 - x) / 2; if (sum == n) { cout << x << endl; return 0; } } return 0; } ``` ⚙️ **解题要点** - 公式推导是关键:`(x + 148) * (151 - x) / 2` 可直接算出从 x 岁到 150 岁的蛋糕分出总量。 - 枚举范围从 2 到 150,因为已知答案大于 1。 - 由于题中保证有唯一解,找到即输出并退出。 ######[AI问答 | 481点数解答 | 2026-07-19 19:46:07]

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