链接:http://acm.hdu.edu.cn/showproblem.php?pid=1717
题目:
小数化分数2time limit: 1000/1000 ms (java/others) memory limit: 32768/32768 k (java/others)
total submission(s): 2920 accepted submission(s): 1186
problem description
ray 在数学课上听老师说,任何小数都能表示成分数的形式,他开始了化了起来,很快他就完成了,但他又想到一个问题,如何把一个循环小数化成分数呢?
请你写一个程序不但可以将普通小数化成最简分数,也可以把循环小数化成最简分数。
input
第一行是一个整数n,表示有多少组数据。
每组数据只有一个纯小数,也就是整数部分为0。小数的位数不超过9位,循环部分用()括起来。
output
对每一个对应的小数化成最简分数后输出,占一行。
sample input
30.(4)0.50.32(692307)
sample output
4/91/217/52
source
题意:将一个小数化成分数形式。
解题思路:
小数(除了无限不循环小数外)都可以化成分数。1.将有限小数化成分数,方法如下:0.25 * 100 = 25;0.25 = 25 / 100(约分即可得到0.25的小数表示);2.将循环小数化成分数,方法如下:0.32(692307) * 100 = 32.692307①;0.32(692307) * 10 ^ 8 = 32692307.(692307)②; ② - ①得:0.32(692307)* (10 ^ 8 - 100) = 32692275; 0.32(692307) = 32692275 / (10 ^ 8 - 100)(约分即可得到0.32(692307)的小数形式)。
代码:
#include #include int gcd(int m, int n){ int r; while(n) { r = m % n; m = n; n = r; } return m;}int main(){ int t; scanf(%d, &t); getchar(); while(t--) { char s[20]; scanf(%s, s); int len = strlen(s), index = 0; for(int i = 0; i
