C++揭秘:国王给骑士发金币,前k天金币总数这样算!
```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`,即骑士收到的金币总数。 ######[AI问答 | 445点数解答 | 2026-02-06 15:17:51]