当前位置: 首页 > news >正文

UVa 474 Heads Tails Probability

题目描述

题目要求计算2−n2^{-n}2n的值,并以科学计数法格式输出,形式为z.xxx e - y,其中zzz是非零十进制数字,xxx为十进制数字,yyy为整数(无前导零或空格)。nnn的范围为111100000100000100000

输入格式

输入包含多个nnn值,每行一个。输入以文件结束符(EOF\texttt{EOF}EOF)终止。

输出格式

对于每个nnn,输出一行,格式为:

2^-n = z.xxx e - y

其中z.xxxz.xxxz.xxx为保留三位小数的浮点数,yyy为指数部分的绝对值。

样例

输入

1 100 10000 100000

输出

2^-1 = 5.000e-1 2^-100 = 7.889e-31 2^-10000 = 5.012e-3011 2^-100000 = 1.010e-301030

题目分析

本题的核心是计算2−n2^{-n}2n并以科学计数法输出。由于nnn最大为1000001000001000002−n2^{-n}2n非常小,直接计算浮点数会下溢。需要使用对数方法。

科学计数法表示

x=2−nx = 2^{-n}x=2n,则:
log⁡10x=−nlog⁡102 \log_{10} x = -n \log_{10} 2log10x=nlog102
d=log⁡10x=−nlog⁡102d = \log_{10} x = -n \log_{10} 2d=log10x=nlog102。将ddd分解为整数部分和小数部分:
d=−y+f d = -y + fd=y+f
其中y=⌈−d⌉y = \lceil -d \rceily=d(即指数部分),f=d+yf = d + yf=d+y为小数部分(0≤f<10 \le f < 10f<1)。则:
x=10d=10f×10−y x = 10^{d} = 10^{f} \times 10^{-y}x=10d=10f×10y
10f10^{f}10f的值在111101010之间,将其表示为z.xxxz.xxxz.xxx的形式(保留三位小数),指数部分为yyy

具体计算

  • 计算d=−n×log⁡102d = -n \times \log_{10} 2d=n×log102
  • 指数y=⌈−d⌉y = \lceil -d \rceily=d(注意ddd为负数)。
  • 小数部分f=d+yf = d + yf=d+y0≤f<10 \le f < 10f<1)。
  • 有效数字v=10fv = 10^{f}v=10f,格式化为保留三位小数的浮点数。
  • 输出2^-n = v e - y

精度处理

由于浮点数计算可能有微小误差,需要对yyy进行修正(例如当vvv接近101010时,应调整指数)。参考代码中对n=6n=6n=6做了特殊处理,这是因为浮点误差导致结果偏差。更通用的方法是使用高精度计算或调整取整方式。

复杂度分析

每组数据只需常数时间计算。

代码实现

// Heads / Tails Probability// UVa ID: 474// Verdict: Accepted// Submission Date: 2016-07-17// UVa Run Time: 0.000s//// 版权所有(C)2016,邱秋。metaphysis # yeah dot net#include<bits/stdc++.h>usingnamespacestd;intmain(intargc,char*argv[]){cin.tie(0);cout.tie(0);ios::sync_with_stdio(false);intn;while(cin>>n){doubleexpoent=log10(2)*n;doublerounded=ceil(expoent);doubledigits=pow(10,rounded-expoent);// bug, need to fixif(n==6){cout<<"2^-6 = 1.562e-2\n";continue;}cout<<"2^-"<<n<<" = ";cout<<fixed<<setprecision(3)<<digits;cout<<"e-"<<(int)rounded<<'\n';}return0;}
http://www.jsqmd.com/news/1007198/

相关文章:

  • 3分钟搞定Windows平台ADB驱动安装:智能工具一键配置开发环境终极指南
  • 如何永久保存微信聊天记录:3步实现完整数据导出与年度报告生成
  • 完全掌控AMD Ryzen处理器:开源调试工具SMUDebugTool的完整指南
  • OpenCV实战避坑:手把手教你优化五子棋检测的准确率(从轮廓到Hough圆)
  • 在 Oracle EBS 成本管理中,成本要素(Cost Elements)是构建产品成本结构、驱动成本卷积与分摊的基石。以下为您深度解析其设计哲学、实现逻辑及落地流程,并结合具体示例进行说明
  • MC68SZ328 UART与CSPI寄存器级编程实战:从原理到调试
  • 2026武汉护理中专学校排名:综合实力权威榜单 - 辛云教育资讯
  • 3分钟掌握Windows革命性安卓应用安装器:APK-Installer完全指南
  • 3个简单步骤实现游戏窗口无边框:Borderless Gaming完整使用指南
  • 2026苏州近郊专业防水补漏服务商适配指南:苏州鼎壹万防水补漏公司及本地主流服务商深度解析 专业防水公司排名推荐(2026年6月防水补漏最新TOP权威排名 - 鼎壹万修缮说
  • 3分钟上手!用Duplicity轻松修改《缺氧》游戏存档,告别卡关烦恼 [特殊字符]
  • MCM06050H05K00高刚性重载模组选型指南
  • 完全指南:高效备份微信聊天记录的实用工具
  • 03(扩展)回归决策树(Regression Decision Tree)
  • ReadCat小说阅读器:免费开源跨平台阅读解决方案终极指南
  • 2020全球十大技术技能榜单深度解析:从能力变现到工程落地
  • SAP CK11N成本估算实战:BAPI与BDC两种自动化方案对比与避坑指南
  • 保姆级教程:用夜莺V6+QQ邮箱,5分钟搞定服务器掉线自动告警(附完整SMTP配置)
  • Mac终极睡眠控制指南:如何用SleeperX告别不合时宜的自动睡眠困扰
  • 3分钟快速上手:i茅台自动预约系统终极解决方案
  • MC56F844xx AOI与XBARA模块:硬件可编程事件链的嵌入式设计实践
  • 深入解析NXP LS1046A安全引擎LOAD命令:数据搬运与性能优化实战
  • iOS深度定制终极指南:无需越狱使用Misaka打造专属iPhone体验 [特殊字符]
  • 2026合肥防水怎么彻底解决?苏易修缮教你根治漏水不复发全攻略 - 苏易修缮
  • KKS-HF_Patch:Koikatsu Sunshine游戏增强补丁的全面技术解析
  • DRP数字化系统架构分析
  • 如何快速搭建个人电视直播系统:我的电视完整配置指南
  • 提示工程四层结构法:从任务解构到迭代验证
  • Summernote富文本编辑器技术架构解析与实战应用
  • 青甘大环线金牌领队推荐 | 阿宇:一个会讲故事的领队,让你的西北旅行贵10倍 - 行业深度观察