无限小数转分数POJ1930分析

将无限小数化为分数,有一套简单的公式。使其轻松表示出来。

循环节

例如:0.121212……

循循环节为12。

公式

这个公式必须将循环节的开头放在十分位。若不是可将原数乘10^x(x为正整数)

就为:12.121212……-0.121212……=12

100倍 - 1倍 =99 (99和12之间一条分数线)

此公式需用两位数字,其中两位数差出一个循环节。

再举一个例子:0.00121212……

公式就变为:1212.121212……-12.121212……=1200

100000 倍 - 1000倍 =99000 (1200与99000之间一条分数线)

第一行为原数的的倍数10^x(x为正整数),第二行为与原数的乘数,10^x(x为正整数)。

解:

设:这个数的小数部分为a,这个小数表示成3+a

10000a-a=3050

9999a=3053

a=3053/9999

算到这里后,能约分就约分,这样就能表示循环部分了。再把整数部分乘分母加进去就是

(3×9999+3053)/9999

=33050/9999

还有混循环小数转分数

如0.1555.....

循环节有一位,分母写个9,非循环节有一位,在9后添个0

分子为非循环节+循环节(连接)-非循环节+15-1=14

14/90

约分后为7/45

时间: 2024-10-25 08:27:24

无限小数转分数POJ1930分析的相关文章

小数化分数2

小数化分数2 题目 Problem Description Ray 在数学课上听老师说,任何小数都能表示成分数的形式,他开始了化了起来,很快他就完成了,但他又想到一个问题,如何把一个循环小数化成分数呢? 请你写一个程序不但可以将普通小数化成最简分数,也可以把循环小数化成最简分数. Input 第一行是一个整数N,表示有多少组数据. 每组数据只有一个纯小数,也就是整数部分为0.小数的位数不超过9位,循环部分用()括起来. Output 对每一个对应的小数化成最简分数后输出,占一行. Sample

(hdu step 2.1.8)小数化分数2(小数化分数——包括了循环小数化分数的情况)

题目: 小数化分数2 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2783 Accepted Submission(s): 993   Problem Description Ray 在数学课上听老师说,任何小数都能表示成分数的形式,他开始了化了起来,很快他就完成了,但他又想到一个问题,如何把一个循环小数化成分数呢?请你写一个程序不但可以

无限循环小数化分数、

循环小数分为混循环小数.纯循环小数两大类. 混循环小数可以*10^n(n为小数点后非循环位数),所以循环小数化为分数都可以最终通过纯循环小数来转化. 等比数列法编辑 无限循环小数,先找其循环节(即循环的那几位数字),然后将其展开为一等比数列.求出前n项和.取极限.化简. 例如:0.333333…… 循环节为3 则0.33333.....=3*10^(-1)+3*10^(-2)+……+3^10(-n)+…… 前n项和为:0.3(1-(0.1)^(n))/(1-0.1) 当n趋向无穷时(0.1)^(

将无限循环小数化为分数

众所周知,有限小数是十进分数的另一种表现形式,因此,任何一个有限小数都可以直接写成十分之几.百分之几.千分之几……的数.那么无限小数能否化成分数? 首先我们要明确,无限小数可按照小数部分是否循环分成两类:无限循环小数和无限不循环小数.无限不循环小数不能化分数,这在中学将会得到详尽的解释:无限循环小数是可以化成分数的.那么,无限循环小数又是如何化分数的呢?由于它的小数部分位数是无限的,显然不可能写成十分之几.百分之几.千分之几……的数.其实,循环小数化分数难就难在无限的小数位数.所以我就从这里入手

【The beauty of math】无限循环小数转分数

0.333333... = 1/3 推导过程: 设x=0.333333 10x=3.333333(循环体的数字个数为1) 10x-x=3 x=1/3 所以计算的核心在于确定无限循环的循环体的数字个数. [The beauty of math]无限循环小数转分数,布布扣,bubuko.com

hdu1717 小数化分数2

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1717 小数化分数2 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2921    Accepted Submission(s): 1187 Problem Description Ray 在数学课上听老师说,任何小数都能表示成分数的形式

HDU1717小数化分数2

小数化分数2 Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 4278    Accepted Submission(s): 1725 Problem Description Ray 在数学课上听老师说,任何小数都能表示成分数的形式,他开始了化了起来,很快他就完成了,但他又想到一个问题,如何把一个循环小数化成分数呢?请你写一个程序不但可以

HDU 2522 & AOJ 441 & AOJ 364 关于小数和分数的转换

总结一下小数和分数之间精确转换的方法. 首先是分数转换为小数,这个比较简单,先看题 http://acm.hdu.edu.cn/showproblem.php?pid=2522 输入一个n,求1/n的精确表示,如果有循环节只输出最小的一个. 手动模拟一下出发,会发现每次都是上一次除法剩下来的余数*10然后继续下一次计算,什么时候会出现循环呢,显然是余数出现重复的时候. 余数判断重复可以搞一个hash或者set,这里n不是特别大,直接用数组就可以了. 另外写的时候注意一下处理整除的情况. #inc

解决java.math.BigDecimal divide方法运算结果为无限小数问题

http://samueli.iteye.com/blog/224755 BigDecimal除法运算报错,错误如下:Non-terminating decimal expansion; no exact representable decimal result 原因是: BigDecimal divide(BigDecimal divisor, int scale, int roundingMode) if divisor is zero, roundingMode==ROUND_UNNECE