[POJ] #1003# Hangover : 浮点数运算
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[POJ] #1003# Hangover : 浮点数运算相关的知识,希望对你有一定的参考价值。
一. 题目
Time Limit: 1000MS | Memory Limit: 10000K | |
Total Submissions: 116593 | Accepted: 56886 |
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 1/2 + 1/3 = 5/6 card lengths. In general you can make n cards overhang by 1/2 + 1/3 + 1/4 + ... + 1/(n + 1) card lengths, where the top card overhangs the second by 1/2, the second overhangs tha third by 1/3, the third overhangs the fourth by 1/4, etc., and the bottom card overhangs the table by 1/(n + 1). This is illustrated in the figure below.
Input
Output
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)
Source
- 按照固定的累加方式:从高层到低层,相对于其相邻下层可以伸出的长度为(1/2),(1/3),...,(1/n)
- 给定一个指定长度 S,问最少需要累加多上块板,使其相对于桌面的伸出长度大于或等于 S
三. 分析
- 算法核心: 此题比较简单,无需考虑任何算法
- 实现细节: 简单的浮点数累加运算即可
四. 题解
1 #include <stdio.h> 2 3 int main() 4 { 5 int i; 6 float length, sum; 7 8 while (1) { 9 sum = 0; 10 scanf("%f\n", &length); 11 if (!length) break; 12 13 for (i = 2; ; i++) { 14 sum += (1 / (float)i); 15 16 if (sum >= length) { 17 printf("%d card(s)\n", i - 1); 18 break; 19 } 20 } 21 } 22 23 return 0; 24 }
以上是关于[POJ] #1003# Hangover : 浮点数运算的主要内容,如果未能解决你的问题,请参考以下文章