hdu 1056 HangOver

March 15, 2013
Hdu

HangOver

Time Limit: 20001000 MS (Java/Others) Memory Limit: 6553632768 K (Java/Others) Total Submission(s): 7186 Accepted Submission(s): 2884

Problem Description How far can you make a stack of cards overhang a table? If you have one card, you can create a maximum overhang of half a card length. (We’re assuming that the cards must be perpendicular to the table.) With two cards you can make the top card overhang the bottom one by half a card length, and the bottom one overhang the table by a third of a card length, for a total maximum overhang of 12 + 13 = 56 card lengths. In general you can make n cards overhang by 12 + 13 + 14 + … + 1/(n + 1) card lengths, where the top card overhangs the second by 12, the second overhangs tha third by 13, the third overhangs the fourth by 14, etc., and the bottom card overhangs the table by 1/(n + 1). This is illustrated in the figure below.

The input consists of one or more test cases, followed by a line containing the number 0.00 that signals the end of the input. Each test case is a single line containing a positive floating-point number c whose value is at least 0.01 and at most 5.20; c will contain exactly three digits.

For each test case, output the minimum number of cards necessary to achieve an overhang of at least c card lengths. Use the exact output format shown in the examples.

Sample Input 1.00 3.71 0.04 5.19 0.00

Sample Output 3 card(s) 61 card(s) 1 card(s) 273 card(s)

#include <iostream>
#include <cstdio>
#include <cstdlib>
#include <cmath>
#include <cstring>
using namespace std;
int main(void){
  double c; int n;
#ifndef ONLINE_JUDGE
  freopen("1056.in", "r", stdin);
#endif
  while (~scanf("%lf", &c)){
    if (fabs(c) <= 1e-9) break;
    double sum = 0; n = 0;
    for (double i = 2;; ++i){
      sum += 1.0/(i); n++;
      if (sum >= c) break;
    }
    printf("%d card(s)\n", n);
  }
  return 0;
}

我晕……我说怎么总是WA,原来我输出的时候,写的是cards(s)……次嗷……

comments powered by Disqus