分析:水题,把结果预处理出来存在数组中,然后在根据输入找结果即可
注意结束条件最好不要用等于0判断 可以用<0.001来判断,防止精度问题
c++代码:
#include<cstdio>
double f[100000];
int main()
{
double x;
int i,total;
f[0] = 0.0;
i = 0;
while (f[i] <= 5.20)
{
i++;
f[i] = f[i-1] + 1.0/(double)(i+1);
}
total = i;
while (scanf("%lf",&x) == 1)
{
if (x < 0.001) break;
for (i = 1; i <= total; i++)
if (f[i] >= x)
{
printf("%d card(s)\n",i);
break;
}
}
return 0;
}