小数化分数2 杭电1717

题目:

小数化分数2

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 801    Accepted Submission(s): 308

Problem Description
Ray 在数学课上听老师说,任何小数都能表示成分数的形式,他开始了化了起来,很快他就完成了,但他又想到一个问题,如何把一个循环小数化成分数呢?
请你写一个程序不但可以将普通小数化成最简分数,也可以把循环小数化成最简分数。
 

 

Input
第一行是一个整数N,表示有多少组数据。
每组数据只有一个纯小数,也就是整数部分为0。小数的位数不超过9位,循环部分用()括起来。
 

 

Output
对每一个对应的小数化成最简分数后输出,占一行。
 

 

Sample Input
  
  
3
0.(4)
0.5
0.32(692307)
 

 

Sample Output
  
  
4/9
1/2
17/52

这个题目其实很简单,但是我还是花了很多时间在上面,真是比较惭愧,开始我用的是这个思想,但是代码提交老是wrong,我
也不知道是为什么,如果有兴趣可以看看。
http://hi.baidu.com/niren_cn/blog/item/d6b62516badadf47f919b8f9.html 错误代码(代码注释比较少,懒得写了):



后来问了队长,他认为0.4(38)=0.4+0.038+0.00038.....后面一大串是一个等比数列,可以用等比数列公式,我上网查了
等比数列无穷项求和为S∞=a1/(1-q) (n-> ∞)(|q|<1)(http://baike.baidu.com/view/1149632.htm),当时想
这个公式也没有简单多少,我就根据这个继续化简了下,题目是求0.s1s2s3...sn(y1y2y3..ym)的分数形式,我们把
s1s2s3...sn看做S1,把y1y2y3..ym看做S2,那么求和公式中的a1为S2/(10^n),q为1/(10^m),根据公式化简
得出了
$$/frac{s2 + (10^m-1)*s1}{10^n * ( 10^m -1 )}$$ ,这个公式其实网上也有,后来才看到的,所以就复制了他的公式,不过他的推导过程我没有看懂
附上地址(http://xuyemin520.is-programmer.com/posts/26183.html)

AC代码:

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值