POJ 1003 Hangover

POJ 1003 Hangover:调和级数与浮点数精度的经典入门题 在算法竞赛和在线评测系统(OJ)的入门阶段,理解基础的数学模拟与浮点数精度处理是必经之路。许多经典题目看似简单,却暗含对循环控制、边界判断和输出格式的严格考察。本主题从调和级数的发散性质出发,剖析累加求和背后的数学原理,进而探讨不同语言实现时的技术要点与常见陷阱。通过暴力累加与二分查找两种方案对比,帮助初学者掌握浮点数比较的容错技巧,并建立规范的程序设计习惯。该知识点广泛应用于编程练习、算法基础教学及工程实践中的数值稳定性场景。文章以POJ 1003 Hangover为例,自然过渡到题目解析与代码实现,适合 阅读详情

一、题目信息

Hangover
Time Limit: 1000MS Memory Limit: 10000K
Total Submissions: 82492 Accepted: 39593

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

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.

Output

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)

二、参考代码

    水题,题目大致意思是,给出一个浮点数c,求出使得 不等式 1/2 + 1/3 + ... + 1/(n+1) >= c 成立的最小 n。既然题目已经给出上限是5.20则可以求出,当n>=300(实际小于这个数字)时候,必定可以达到上限要求。故数组长度取得300。

    此处也可以用二分查找,但是由于数组长度很短,时间上不会有太大的差别。

#include <stdio.h>
int main()
{
    float res[300] = {0,0.5},c;
    int i,num = 0;
    for (i = 2;i< 300;i++)
        res[i] = res[i-1] + 1.0/(i+1); 
    while(scanf("%f",&c) && c)
    {
        for(i = 1;i < 300;i++)
        {
            if(res[i] >= c)
            {
                printf("%d card(s)\n",i);
                break;
            }
        }
    }
    return 0;
}






poj-1002源码,没有题解,题解看博客 poj-1002源码,没有题解,题解看博客poj-1002源码,没有题解,题解看博客poj-1002源码,没有题解,题解看博客poj-1002源码,没有题解,题解看博客 立即下载

相关推荐

五子棋AI算法第一篇-我对谷歌Alphago的看法

最近Google宣布他们的围棋AI以5:0的战绩打败欧洲围棋三冠王。我一直对人工智能比较感兴趣,正好趁年前空闲的几天用JS写了一个五子棋的AI。其实很久以前就用自创的算法写过一个JAVA版的五子棋AI,不过棋力很不理想。这次用的是JS写的,所以无论任何平台上只要能打开网页的都可以玩。google爆出这个新闻之后,很多人觉得这是不是意味着电脑智商已经在人类之上了,围棋已经没有意义了之类的。甚至觉得这是

言川的博客 2万+

getchar()的用法

m0_58228334的博客 5379

SIwave串扰分析保姆级教程:从Allegro文件导入到结果解读,手把手教你排查PCB信号问题

本文提供SIwave串扰分析的详细教程,从Allegro文件导入到结果解读,手把手教你排查PCB信号问题。涵盖环境准备、参数配置、串扰扫描技巧及实战案例,帮助工程师精准定位和解决高速PCB设计中的串扰问题,提升信号完整性分析能力。

weixin_42620913的博客 259

C语言的深入分析 printf 缓冲区(为了理解指针)

https://www.jb51.net/article/127400.htm 题目:C语言中printf()缓冲问题详解 (有例子,我未用,可看) 为什么要引入缓冲区 比如我们从磁盘里取信息,我们先把读出的数据放在缓冲区,计算机再直接从缓冲区中取数据,等缓冲区的数据取完后再去磁盘中读取,这样就可以减少磁盘的读写次数,再加上计算机对缓冲区的操作大大快于对磁盘的操作,故应用缓冲区可大大提高计算...

chemddd的博客 1069

分布式存储系统关于GDPR条例中的数据清除原则

文章目录前言HDFS存储系统数据的完全删除基于加解密的输入输出流的数据保护方案 前言 关于GDPR是什么,可能许多同学之前并不太了解,至少笔者在之前也是不清楚的。GDPR全称为通用数据保护条例,General Data Protection Regulation。它是一项来自欧盟的关于计算机数据保护相关的条约,旨在规范系统如何收集,管控用户私人数据的种种行为。但是当前的一些存储系统并没有完全符合...

走在前往架构师的路上 3627

基于Xilinx的I2S Receiver IP核和I2S Transmitter IP核音频验证

基于Xilinx的I2S Receiver IP核和I2S Transmitter IP核音频验证 文章目录前言一、工程构架二、Xilinx IP的配置1.I2S Transmitter IP配置:2.I2S Receiver IP配置:3.WM8960的配置:总结 前言 本实验基于Xilinx ZU4EV平台,也适用于ZYNQ平台。音频验证完成,记录调过程。 ①Xilinx 音频IP只支持主模式,左对齐或右对齐方式,16bit或24bit字长。 ②WM8960器件作为从模式;24bit字长;数据传输格

weixin_45637597的博客 6815

关于C语言中getchar()函数的用法

关于C语言中getchar()函数的用法

... 5万+

219页华为供应链管理:市场预测S&OP计划、销售预测与存货管理精要

S&OP计划的整合作用:S&OP是一种综合的销售和运营计划流程,它将市场预测、生产能力、库存水平和财务目标整合在一起,以确保企业能够平衡供需,实现最佳的运营效率。持续监控与改进:市场预测、S&OP计划、计划委员会的决策以及存货管理都需要持续的监控和评估。供应链策略与执行:华为ISC拥有清晰的供应链策略,并通过SISC架构实现了策略的有效执行,包括供应链网络设计、库存管理、物流优化等。持续的供应链创新:华为ISC不断探索新的供应链管理方法和技术,如数字化供应链、智能物流等,以适应全球化和市场的快速变化。

zuoan1993的博客 2434

getchar()的用法详细讲解

getchar()用法

m0_73528660的博客 1万+

【backtrader保姆级教学】投资组合回测

method1:探索投资组合的最有方案,使用蒙特卡洛模拟Markowitz模型。# 提取最小波动组合对应的权重, 并转换成Numpy数组。# 绘制收益-标准差的散点图,并用颜色描绘夏普比率。# 在收益-风险散点图中突出风险最小的点。:param any_day: 任意日期。# 将该点坐标显示在图中并保留四位小数。password = “替换密码”# 找到标准差最小数据的索引值。user = “替换账号”# 计算GMV投资组合收益。# 计算每项资产的夏普比率。# 设置无风险回报率为0。

weixin_38132951的博客 2315

【25届数字IC秋招总结】面试经验7——联发科

25届数字ic面试记录——联发科

lalala0635的博客 982

POJ1003-Hangover

全解题报告索引目录 -> 【北大ACM – POJ试题分类】 转载请注明出处:http://exp-blog.com ------------------------------------------------------------------------- 打发时间顺手A的水题= = 没啥好说的。。。 算是增强一下做难题前的信心O(∩_∩)O /*...

ζёСяêτ - 小優YoU 1万+

华为OD机试真题 Java&Go 实现【优雅子数组】【100%通过率】【2022.11 Q4 新题】

如果一个数组中出现次数最多的元素出现大于等于K次,被称为K -优雅数组,k也可以被称为优雅阈值。例如,数组1,2,3,1、2,3,1,它是一个3-优雅数组,因为元素1出现次数大于等于3次,数组1,2,3,1,2就不是一个3-优雅数组,因为其中出现次数最多的元素是1和2,只出现了2次。给定一个数组A和k,请求出A有多少子数组是k-优雅子数组。

MISAYAONE的博客 1万+

POJ-1003 Hangover

POJ-1003 题目链接:POJ-1003 题目大意:如果您有一张卡,则最多可以创建一半的卡长。(我们假设这些卡片必须垂直于桌子。)使用两张卡片,您可以使最上面的卡片悬垂在底部的卡片长度的一半,而最下面的卡片悬垂在桌面的卡片长度的三分之一,总最大悬垂为1/2 + 1/3 = 5/6卡长度。通常,您可以将n张卡片悬垂1/2 + 1/3 + 1/4 + … + 1 /(n +1)牌的长度,其中顶牌的...

鱼头的水题之路 339

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

POJ 1003 Hangover 解题报告

POJ 1003 Hangover 解题报告 编号:1003 考查点:简单计算题 思路:一直加撒,知道大于等于那个数即可,注意控制下循环变量即可.> 提交情况:没的说的,肯定直接AC.> Source Code: //POJGrids1003 #include<iostream> usingnamespacestd...

weixin_30709635的博客 113

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

POJ 1003 Hangover [解题报告] Java

http://www.acmerblog.com/POJ-1003-Hangover-blog-212.html

expleeve 849

POJ 1003 Hangover - 搜索算法 - 二分查找法

POJ 1003 Hangover 题目本意是,寻找序列中不小于给定某数的最小数的序号。相当容易的题目。 理清题意,我的直接反应就是用搜索算法。于是就准备写二分查找法的代码。写的过程中发现自己对二分查找法掌握的不扎实:首先是算法的基本框架不熟悉,再就是把握不好算法的出口。写完提交AC后,在讨论区中发现直接算看起来还简单一些,那就跟这写一下吧。 温习一下二分查找法:

ChenK在学习! 1505

POJ_1003_Hangover分析

POJ_1003_Hangover分析 题目是求要达到给定的伸出桌面的长度,至少需要多少片纸片?题目给出了纸片的张数和伸出去的长度的数学公式,1/2 + 1/3 + 1/4 + ... + 1/(n + 1)。好吧,这是一道高中数学休闲题,大家就休闲一下。不多说了。    ...

domore 176

POJ.1003 Hangover ( 水 )

POJ.1003 Hangover ( 水 )代码总览#include <cstdio> #include <cstring> #include <algorithm> #include <cmath> #include <queue> #include <stack> #include <vector> #define nmax using namespace std; vector <doubl

Pengwill's Blog 244
上一篇: POJ1700 Crossing River 过河问题
下一篇: POJ 1007 DNA Sorting
Sinchb
博客等级 码龄16年 69粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值