直接用库函数二分即可。
#include <iostream>
#include <cstring>
#include <cstdlib>
#include <cstdio>
#include <cmath>
#include <cctype>
#include <algorithm>
#include <numeric> #define eps 1e-8
using namespace std; double len[]; int main () {
ios :: sync_with_stdio(false);
len[] = ;
for (int i = ; i < ; ++ i) {
len[i] = len[i - ] + 1.0 / (double)(i + );
} //cout << len[273] << endl;
double n;
while (cin >> n) {
if (n - < eps) {
break;
}
//cout << lower_bound(len, len + 300, n) - &len[0] << endl;
printf ("%d card(s)\n", lower_bound(len, len + , n) - &len[]);
}
return ;
}