HDU 1717 的小总结

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

个人思路:从小我们学过的数学中就知道,只有有理数才可以用分数的形式表示。

对于有限小数,只需要将其放大10^n倍再除以10^n,然后化简就可以了,可是对于无限循环的小数,我们进行讨论。

1.如果小数部分全部循环,我们知道

令i为循环节的长度。x为原小数。

则10i *x-x=整数部分

例如  0.44444444.................

   0.4444.....*10-0.4444.....=4

    0.4444.......=4/(10-1)=4/9

2.有理部分+无限循环部分

   直接用过例子来说

  0.45555....*100-0.45*10=41

  0.45555...=41/90.

 

还有小技巧:分子为 有理部分+第一个循环节 ,放大成整数。

                 分母为 前边循环节长度个数个9,有理部分数的个数个0.

                 是不是很简单?

   

posted @ 2012-09-25 22:29  钟迪  阅读(165)  评论(0)    收藏  举报