![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/0e7cd549b5b1df6c93d10c3ec249b7a1.png)
思路:试了一下这个题居然生算就可以hhh,简而言之就是对每一个card_length都试一下最少需要多大的n值才会超过,代码如下:
#include <iostream>
#include <cmath>
using namespace std;
int main()
{
double card_length = 0.0;
cin >> card_length;
while (card_length != 0)
{
double card_num = 2;
double cur_length = 0;
while (cur_length < card_length)
{
cur_length += 1 / card_num;
card_num++;
}
cout << card_num - 2 << " card(s)" << endl;
cin >> card_length;
}
return 0;
}
实际上还可以直接利用ln(n) = 1 + 1/2 + ……+1/n把这个问题转化为ln(n)的逆运算的方法求解,因为已经通过就懒得写了(主要是懒得查ln(n)的c++表示方法hhh)