酷代码 AI
菜单
服务商

已知: S n = 1 + 1 2 + 1 3 + … + 1 n S n ​ =1+ 2 1 ​ + 3 1 ​ +…+ n 1 ​ 。显然对于任意一个整数 k k,当 n n 足够大的时候, S n > k S n ​ >k。 现给出一个整数 k k,要求计算出一个最小的 n n,使得 S n > k S n ​ >k。 输入格式 一个正整数 k k。 输出格式 一个正整数 n n。 样例 #1 样例输入 #1 1 样例输出 #1 2 提示 【数据范围】 对于 100 % 100% 的数据, 1 ≤ k ≤ 15 1≤k≤15。 以C++的形式回答

```cpp #include <iostream> // 此程序用于找出满足 Sn > k 的最小正整数 n // Sn = 1 + 1/2 + 1/3 + ... + 1/n // 主函数,程序的入口 int main() { int k; // 从标准输入读取一个整数 k std::cin >> k; double Sn = 0; int n = 1; // 循环计算 Sn,直到 Sn > k while (Sn <= k) { Sn += 1.0 / n; n++; } // 输出满足 Sn > k 的最小 n std::cout << n - 1 << std::endl; return 0; } ``` 代码解释 1. 输入处理:程序从标准输入读取一个整数`k`,这是题目要求的目标值。 2. 初始化变量:`Sn`用于存储累加和,初始化为0;`n`表示当前项数,初始化为1。 3. 循环累加:使用`while`循环不断累加`1/n`到`Sn`,直到`Sn`大于`k`。每次循环`n`加1。 4. 输出结果:由于最后一次循环结束后`n`多加了1,所以输出`n - 1`作为满足`Sn > k`的最小`n`。 复杂度分析 - 时间复杂度:$O(n)$,其中`n`是满足`Sn > k`的最小`n`。 - 空间复杂度:$O(1)$,只使用了常数级的额外空间。 [2026-02-07 11:55:17 | AI问答 | 378点数解答]

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