hdu 1905 小数化分数2

#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<cstring>
#include<vector>
#include<stdlib.h>
#define ll __int64
#define pi acos(-1.0)
using namespace std;
int
gcd(int a,int b)
{

    int
t;
    if
(a<b) swap(a,b);
    while
(b)
    {

        t=a;
        a=b;
        b=t%b;
    }

    return
a;
}

int
pows(int n)
{

    int
ans=1;
    while
(n--)
        ans*=10;
    return
ans;
}

int
main()
{

    int
i,j,n,sum,t,pos1,pos2,pos3,a,b,c,len;
    string an;
    cin>>t;
    while
(t--)
    {

        cin>>an;
        len=an.length();
        pos2=an.find('(',0);
        pos3=an.find(')',pos2);
        if
(pos2<0)
        {

            a=0;
            for
(i=2;i<len;i++)
                a=a*10+an[i]-'0';
            b=pows(len-2);
        }

        else

        {

            a=0;
            for
(i=2;i<pos2;i++)
                a=a*10+an[i]-'0';
            c=0;
            for
(i=pos2+1;i<pos3;i++)
                c=c*10+an[i]-'0';
            b=pows(pos3-pos2-1);
            sum=a*b+c;
            a=sum-a;
            b=(b-1)*pows(pos2-2);
        }

        c=gcd(a,b);
        cout<<a/c<<'/'<<b/c<<endl;
    }

    return
0;
}

posted @ 2013-07-24 18:17  _随心所欲_  阅读(146)  评论(0编辑  收藏  举报