POJ 1003 浮点数运算水题

来源:互联网 发布:淘宝页尾 编辑:程序博客网 时间:2024/06/03 16:09

URL:http://poj.org/problem?id=1003


题目大意:

给定一个浮点数n, 求满足1/2+1/3+...+1/(k+1) >= n的最小k值并输出。


数据解析:

如1.00一数,有如下数据:

k  value1  1/2    0.500000  <12  5/6    0.833333  <13  13/12  1.083333  >1

可得答案为3.


思路分析:

第一种方法:打表,此处不作详细介绍。

第二种方法:循环枚举。从1开始枚举k的值,通过递推式算出对应的数值,若大于等于n则输出k的值,否则继续计算。


部分易错点:

1. 注意进行浮点数运算时,避免整数除以整数,容易发生精度问题。


代码呈现:

#include<cstdio>using namespace std;int main(){    int m;    float n;    double i,j;    scanf("%f",&n);    while(n > 0.00)    {        i = 0.00;        m = 1;        while(i < n)        {            j = 1.0/(m+1); //avoid inaccuracy            i = i+j;            m++;        }        m--;        printf("%d card(s)\n",m);        scanf("%f",&n);    }    return 0;}


原创粉丝点击