zoukankan      html  css  js  c++  java
  • 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
     
    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
    ",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
    ",m,n);
            }
        }
        return 0;
    }
  • 相关阅读:
    动态添加LInk的分析
    ASP.NET内置对象-网页转向的4中方法
    网页生命周期-动态添加控件
    网页生命周期-控件事件执行顺序
    网页生命周期-PageLoad事件
    HyperLink 控件
    ListBox控件
    OptionMenu选项菜单
    Menubutton按钮弹出菜单
    Menu-右键弹出菜单
  • 原文地址:https://www.cnblogs.com/Ritchie/p/5425348.html
Copyright © 2011-2022 走看看