酷代码 AI
菜单
服务商

国王将金币作为工资,发放给忠诚的骑士。第一天,骑士收到一枚金币;之后两天(第二天和第三天),每天收到两枚金币;之后三天(第四、五、六天),每天收到三枚金币;之后四天(第七、八、九、十天),每天收到四枚金币……;这种工资发放模式会一直这样延续下去:当连续 𝑛 天每天收到 𝑛 枚金币后,骑士会在之后的连续 𝑛 + 1 天里,每天收到 𝑛 + 1 枚金币。 请计算在前 𝑘 天里,骑士一共获得了多少金币。 输入格式 一个正整数 𝑘 ,表示发放金币的天数。 输出格式 一个正整数,即骑士收到的金币数。(c++—)

```cpp #include <iostream> using namespace std; int main() { int k; cin >> k; int days = 0; int coins = 0; int n = 1; while (days < k) { for (int i = 0; i < n; ++i) { if (days < k) { coins += n; days++; } else { break; } } n++; } cout << coins << endl; return 0; } ``` 代码解释 1. 变量定义: - `k`:用户输入的发放金币的天数。 - `days`:用于记录当前已经累计的天数,初始值为 0。 - `coins`:用于记录骑士收到的金币总数,初始值为 0。 - `n`:表示当前阶段每天发放的金币数,初始值为 1。 2. 循环逻辑: - 使用 `while` 循环,只要 `days` 小于 `k`,就继续循环。 - 在 `while` 循环内部,使用 `for` 循环,循环 `n` 次,代表当前阶段有 `n` 天每天发放 `n` 枚金币。 - 在每次 `for` 循环中,检查 `days` 是否小于 `k`,如果是,则将 `n` 累加到 `coins` 中,并将 `days` 加 1;如果 `days` 已经达到或超过 `k`,则跳出 `for` 循环。 - 每次 `for` 循环结束后,将 `n` 加 1,进入下一个阶段。 3. 输出结果: - 当 `days` 达到或超过 `k` 时,`while` 循环结束,输出 `coins`,即骑士收到的金币总数。 [2026-02-06 15:17:51 | AI问答 | 445点数解答]

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