HDU1717小数化分数2

小数化分数2

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 4278    Accepted Submission(s):
1725

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

Source

2007省赛集训队练习赛(2)

Recommend

lcy   |   We have carefully selected several similar
problems for you:  1715 1716 1166 1719 1722

# include<stdio.h>
int gcd(int a,int b)
{
    int temp;
    while(a%b!=0)
    {
        temp=a%b;
        a=b;
        b=temp;
    }
    return b;
}
int main()
{
    int i,ncase,ans,p,q,t,m,n,x,y,k,l;
    char ch[25];
    scanf("%d",&ncase);
    while(ncase--)
    {
        scanf("%s",ch);
        x=0;
        t=0;
        p=0;
        q=0;
        k=1;l=1;
        for(i=2;ch[i]!=0;i++)
        {
            if(t==0 && ch[i]!=‘(‘)
            {
                p++;
                x*=10;
                x+=ch[i]-‘0‘;
            }
            if(t==1&& ch[i]!=‘)‘)
            {
                q++;
                y*=10;
                y+=ch[i]-‘0‘;
            }
            if(ch[i]==‘(‘) {t=1;y=x;q=p;}
        }
        if(q==0)
        {
            while(p--)
                k*=10;
            ans=gcd(x,k);
            x/=ans;
            k/=ans;
            printf("%d/%d\n",x,k);
        }
        else
        {
            m=y-x;
            while(p--)
                k*=10;
            while(q--)
                l*=10;
            n=l-k;
            ans=gcd(m,n);
            m/=ans;
            n/=ans;
            printf("%d/%d\n",m,n);
        }
    }
    return 0;
}
时间: 2024-08-25 08:40:15

HDU1717小数化分数2的相关文章

hdu1717 小数化分数2

题目链接: 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): 2921    Accepted Submission(s): 1187 Problem Description Ray 在数学课上听老师说,任何小数都能表示成分数的形式

hdu1717 小数化分数

题目链接: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): 5375    Accepted Submission(s): 2188 Problem Description Ray 在数学课上听老师说,任何小数都能表示成分数的形式,他

ACM学习历程—HDU1717 小数化分数2(gcd)

Description Ray 在数学课上听老师说,任何小数都能表示成分数的形式,他开始了化了起来,很快他就完成了,但他又想到一个问题,如何把一个循环小数化成分数呢? 请你写一个程序不但可以将普通小数化成最简分数,也可以把循环小数化成最简分数. Input 第一行是一个整数N,表示有多少组数据. 每组数据只有一个纯小数,也就是整数部分为0.小数的位数不超过9位,循环部分用()括起来. Output 对每一个对应的小数化成最简分数后输出,占一行. Sample Input 3 0.(4) 0.5

小数化分数2

小数化分数2 题目 Problem Description Ray 在数学课上听老师说,任何小数都能表示成分数的形式,他开始了化了起来,很快他就完成了,但他又想到一个问题,如何把一个循环小数化成分数呢? 请你写一个程序不但可以将普通小数化成最简分数,也可以把循环小数化成最简分数. Input 第一行是一个整数N,表示有多少组数据. 每组数据只有一个纯小数,也就是整数部分为0.小数的位数不超过9位,循环部分用()括起来. Output 对每一个对应的小数化成最简分数后输出,占一行. Sample

(hdu step 2.1.8)小数化分数2(小数化分数——包括了循环小数化分数的情况)

题目: 小数化分数2 Time Limit: 1000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 2783 Accepted Submission(s): 993   Problem Description Ray 在数学课上听老师说,任何小数都能表示成分数的形式,他开始了化了起来,很快他就完成了,但他又想到一个问题,如何把一个循环小数化成分数呢?请你写一个程序不但可以

hdu 1717 小数化分数2 (数论)

点我点我点我!!! 接下来要做的就是模拟上述过程了. 静下来想一下自己要得到的信息. 然后拿出来,就可以了,模拟嘛,都是这样的. #include <iostream> #include <cstdio> #include <cstring> #include <algorithm> using namespace std; char str[20]; int gcd(int a,int b) { return a%b==0?b:gcd(b,a%b); }

HDU1717 (循环小数化分数)

题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=1717 分析: 我们将这个循环小数分成三部分0.a1a2a3a4....an(b1b2bb3...bm) 分成0,不循环的部分a1a2...an,和循环节b1b2b3...bm 设这个小数为X,a1a2a3....an=s1, b1b2b3...bm=s2,y=0.(b1b2b3b4..bm) X * 10^n = s1 + y;       ---------1) y * 10^m = s2 +

【HDOJ】1717 小数化分数2

简单字符串处理. 1 #include <cstdio> 2 #include <cstring> 3 #include <cmath> 4 #include <ctype.h> 5 6 #define MAXN 25 7 char str[MAXN]; 8 int ten[15]; 9 10 int gcd(int m, int n) { 11 if (m == 0) 12 return n; 13 if (m > n) 14 return gcd(

HDU 1717 小数化分数2

http://acm.hdu.edu.cn/showproblem.php?pid=1717 之前莫名WA了挺多次的有趣的题orz 感觉还是写麻烦了 注意字符串处理 代码:  0MS  1068K #include <cstdio> #include <cstring> using namespace std; int gcd(int m, int n) { int r; while (n) { r = m % n; m = n; n = r; } return m; } int