-5

以下是北大裁判的问题 ID 1003 的链接:http ://poj.org/problem?id=1003

对于这个问题,我们需要做的就是计算谐波级数的总和,并将其与我们已经输入的变量进行比较

我得到了示例输入案例的正确答案,但我不知道为什么我的答案没有被接受?我得到“错误答案”作为结果。问题中的一部分说“输入由一个或多个测试用例组成,后跟包含数字 0.00 的行,表示输入结束”我不知道该怎么做 0.00 部分,我是只接受单一输入,我不明白该怎么做?

这是我的解决方案:

#include<iostream>

using namespace std;

int main()
{

    float c;
    float sum = 0;
    cin >> c;

    short int i = 1;

    while(1)
    {
        sum += (float)1/(i+1);

        if(sum >= c)
        {
            cout << i << " card(s)";
            break;
        }
        i++;
    }
    return 0;
}
4

2 回答 2

1

输入由一个或多个测试用例组成,后跟一行包含表示输入结束的数字 0.00。每个测试用例都是一行,包含一个正浮点数 c,其值至少为 0.01,最多为 5.20;c 将包含三个数字。

您的程序不会接受正确的输入。

于 2013-07-17T12:13:32.743 回答
0
  1. 输入由一个或多个测试用例组成。

  2. 使用示例中显示的确切输出格式,这意味着您应该在每个案例之后打印一个换行符。

我对您的代码进行了一些更改以使其被接受。

#include <iostream>

using namespace std;

int main() {
    float c;
    while (true) {
        cin >> c;
        if (c == 0.0)
            return 0;
        float sum = 0;
        short int i = 1;
        while (1) {
            sum += 1.0 / (i + 1);
            if (sum >= c) {
                cout << i << " card(s)" << endl;
                break;
            }
            i++;
        }
    }
}
于 2013-07-17T12:24:14.443 回答