>  기사  >  데이터 베이스  >  HDOJ 1717 小数化分数2

HDOJ 1717 小数化分数2

WBOY
WBOY원래의
2016-06-07 15:31:461249검색

链接: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): 2920Accepted Submission(s): 1186 Problem Description Ray 在数学课

链接: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): 2920    Accepted Submission(s): 1186


Problem Description

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

 


Input

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

 


Output

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

 


Sample Input

<p>3
0.(4)
0.5
0.32(692307)</p>

 


Sample Output

<p>4/9
1/2
17/52</p>

 


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 <cstdio>
#include <cstring>

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 <br>
<br>



</cstring></cstdio>
성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
이전 기사:关于cocos2d다음 기사:【Oracle】