题解 SP902 【HANGOVER - Hangover】

这道题前面已有10位dalaoAC了,可能因为这道题太水了,就没发题解,那我就做第一个发题解的蒟蒻 吧。

这题水到爆,当然,是在看懂题意的基础上。(我看了不下于五遍才看懂,可能是太蒟了 )设读入数据为a,那么这道题实际上是求 1 2 + 1 3 + 1 4 + 1 5 + . . . + 1 ( n + 1 ) < a \dfrac{1}{2} + \dfrac{1}{3} + \dfrac{1}{4} + \dfrac{1}{5} + ... + \dfrac{1}{(n+1)} < a 21+31+41+51+...+(n+1)1<a这个不等式中n的最小值是多少。所以代码就出炉了:

#include   //万能头文件
using namespace std; 
int main ()
{
    double a;   //定义输入数据,浮点型的
    while (cin >> a){   //while循环读入
        if(a == 0) break;   //输入结束条件
        double sum = 0;   //求和变量
        int p = 0;    //输出数据
        for(int i = 2;; i++){
            sum += 1.0 / i;  //sum求和
            p++;
            if(sum >= a) {
                cout << p << " card(s)\n";
                break;
            }
        }
    }
    return 0;
} 

你可能感兴趣的:(洛谷题解)