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.
是不是很简单?

浙公网安备 33010602011771号