题目
题解
实现题。
注意几个细节:
- 题目要求 “实数x保证大于等于0.01,小于等于5.20”,样例中又给出了对应的数据
5.19 273 card(s)
,所以遍历的最大范围就是274; abs(x) > esp
控制浮点数x
不为0;a-b > -esp
当a>=b时
为真,切不可写成a-b > esp
;- 遍历出来的数要-1才是正确答案。
代码
#include<bits/stdc++.h>
using namespace std;
const double esp = 0.00000001;
double x;
int main()
{
while(cin>>x && abs(x) > esp) {
double sum = 0;
int i = 2;
for(;i <= 300;i ++) {
sum += 1.0/i;
if(sum-x > -esp) break;
}
printf("%d card(s)\n", i-1);
}
return 0;
}