重新开始战斗11-编程之美-精确表达浮点数
来源:互联网 发布:淘宝网通勤是什么意思 编辑:程序博客网 时间:2024/05/21 12:10
问题描述:
给定一个有限小数或无限循环小数,能否以分母最小的分数形式来返回这个小数。
问题分析:
在进行分析之前,先谈谈对这个题的思考方式。如何表示一个有限小数或无限循环小数,首先,无限循环小数的表达一定比有限小数更加复杂,所以应该从有限小数入手。其次,用分母最小的分数形式表示,如果没有这个限制条件,那么问题的求解也应该会变得简单。因此在解决这个问题的时候,应该从简到难。对于有限小数:X=0.a1a2a3..an,在不考虑分母最小的情况下,其分数的表示很简单!即,如果要用分母最小的形式表示,则求10n和a1a2a3..an最大公约数问题。
对于无限循环小数:X=0.a1a2a3..an(b1b2b3..bm),其中括号内为循环部分,关于无限循环小数存在非循环节与循环节的问题,如果乘以10n,则可以将问题转为只含循环节的无限循环小数的问题上,这样又可以进一步简化问题。
那么对于X=0.a1a2a3..an( b1b2b3..bm),10nX=a1a2a3..an +0.( b1b2b3..bm);对于Y=0.( b1b2b3..am),
10mY = 0.( b1b2b3..bm)+b1b2b3..bm,进而,10mY-Y=b1b2b3..bm,所以Y= b1b2b3..bm/(10m-1)。带入得:
X=( a1a2a3..an+Y)/10n
=( a1a2a3..an+ b1b2b3..bm/(10m-1))/10n
=( a1a2a3..an*(10m-1)+(b1b2b3..bm))/((10m-1)*10n)
得到问题的解,然后退化为最大公约数问题。
0 0
- 重新开始战斗11-编程之美-精确表达浮点数
- 【编程之美】精确表达浮点数
- 精确表达浮点数 编程之美
- 精确表达浮点数 -- 编程之美
- 编程之美--精确表达浮点数
- 编程之美:精确表达浮点数
- 编程之美精确表达浮点数
- 编程之美2.6——精确表达浮点数
- 编程之美——精确表达浮点数
- 编程之美-2.6、精确表达浮点数
- 编程之美2:精确表达浮点数
- [编程之美] 2.6 精确表达浮点数
- 编程之美2.6 精确表达浮点数
- 【编程之美】2.6精确表达浮点数
- [编程之美] PSet2.6 精确表达浮点数
- 编程之美--2.6 精确表达浮点数
- 编程之美 2.6 精确表达浮点数
- 编程之美读书笔记2.6—精确表达浮点数
- 排序小(新)
- AFNetworking学习笔记1
- VC中编译生成lib文件
- 的规范的合格的话
- Android -- 利用ContentProvider 读取和写入短信
- 重新开始战斗11-编程之美-精确表达浮点数
- OC中字符串常用的操作
- shell 中使用正则表达式
- Facebook 20 亿美元收购 Oculus,下一步虚拟社交?
- Android中xml文件中空格转义符
- JSTL
- HashMap源码解读
- ok210 WINCEbootloader启动笔记
- HTC One (M8) 现场上手:最大的感觉就是 Solid