链接:

http://acm.hdu.edu.cn/showproblem.php?pid=1717

 

举例:

0.24333333…………=(243-24)/900=73/300
0.9545454…………=(954-9)/990=945/990=21/22

 

代码:

#include<stdio.h>
#include<string.h>

#define N 110

int gcd(int a, int b)
{
    return b==0?a:gcd(b, a%b);
}

int main()
{
    int t;
    scanf("%d", &t);
    while(t--)
    {
        char s[N];

        scanf("%s", s);

        int a=0, b=0, c=1, d=1, e=1, z, flag=0;
        for( z=0; s[z]; z++)
            if(s[z]=='.') break;

        for(int i=z+1; s[i]; i++)
        {
            if(s[i]=='(')
            {
                flag=1;
                for(int j=i+1; s[j]; j++)
                {
                    if(s[j]==')')
                        break;
                    b = b*10 + s[j]-'0';
                    d *= 10;
                    e *= 10;
                }
                break;
            }
            a = a*10 + s[i]-'0';
            c *= 10;
            d *= 10;
        }

        if(flag)
        {
            a = a*e + b - a;
            d = d-c;
        }

        int g = gcd(a, d);

        printf("%d/%d\n", a/g, d/g);
    }

    return 0;
}

 

posted on 2015-08-13 08:21  栀蓝  阅读(321)  评论(0编辑  收藏  举报

levels of contents